VictoriaMetrics时序数据库(TSDB)的使用

1:通过docker拉去镜像,设置挂载路径,设置数据保存天数,设置http数据接收端口,如下直接运行即可

bash 复制代码
docker run -d -p 4242:4242 -p 8428:8428  -v /opt/victoria:/victoria-metrics-data --name victoria victoriametrics/victoria-metrics:latest --opentsdbHTTPListenAddr=:4242 --retentionPeriod=36d

也可以设置文件的读写权重

bash 复制代码
docker run -d -p 4242:4242 -p 8428:8428  -v /opt/victoria:/victoria-metrics-data:rw --name victoria victoriametrics/victoria-metrics:latest --opentsdbHTTPListenAddr=:4242 --retentionPeriod=36d

2:发送数据到tsdb

2-1:windows环境下

bash 复制代码
curl -H "Content-Type: application/json" -d "{\"metric\":\"x.y.z\",\"value\":45.34,\"tags\":{\"t1\":\"v1\",\"t2\":\"v2\"}}" http://localhost:4242/api/put

2-2:linux环境下

bash 复制代码
curl -H 'Content-Type: application/json' -d '{"metric":"x.y.z","value":45.34,"tags":{"t1":"v1","t2":"v2"}}' http://localhost:4242/api/put

3:查询tsdb的数据

bash 复制代码
GET | POST http://localhost:8428/api/v1/query?query=...&time=...&step=...
bash 复制代码
GET | POST http://localhost:8428/api/v1/query_range?query=...&start=...&end=...&step=...

查询延迟

默认情况下,Victoria Metrics 不会立即返回最近写入的样本。-search.latencyOffset相反,它检索在命令行标志指定的时间之前写入的最后结果,该时间的默认偏移量为 30 秒。query对于和来说都是如此,query_range并且可能会给人这样的印象:数据写入 VM 时有 30 秒的延迟

此标志可防止由于在最后的抓取间隔中仅抓取部分值而导致不一致的结果

3:设置账号密码登录vmui与推送与查询使用账号密码

bash 复制代码
docker run -d -p 4242:4242 -p 8428:8428  -v C:/victoria:/victoria-metrics-data --name victoria victoriametrics/victoria-metrics:latest --opentsdbHTTPListenAddr=:4242 --retentionPeriod=36d  --httpAuth.username=admin -httpAuth.password=123456

3-1:使用基础java类推送数据

java 复制代码
	public static void main2(String[] args) {
        String url = "http://localhost:4242/api/put";
        String username = "admin";
        String password = "123456";

        // 构建请求JSON数据
        String jsonData = "{\"metric\":\"point\",\"value\":45.34,\"tags\":{\"t1\":\"v1\",\"t2\":\"v2\"}}";

        try {
            URL obj = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) obj.openConnection();

            // 设置请求方法为 POST
            conn.setRequestMethod("POST");

            // 设置基本身份验证信息
            String auth = username + ":" + password;
            byte[] encodedAuth = java.util.Base64.getEncoder().encode(auth.getBytes(StandardCharsets.UTF_8));
            String authHeaderValue = "Basic " + new String(encodedAuth);
            conn.setRequestProperty("Authorization", authHeaderValue);

            // 设置请求头为 JSON 格式
            conn.setRequestProperty("Content-Type", "application/json");

            // 启用输出流,并写入请求体数据
            conn.setDoOutput(true);
            OutputStream os = conn.getOutputStream();
            os.write(jsonData.getBytes(StandardCharsets.UTF_8));
            os.flush();
            os.close();

            // 获取响应
            int responseCode = conn.getResponseCode();
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            // 输出响应结果
            System.out.println("Response Code: " + responseCode);
            System.out.println("Response Body: " + response.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

3-2:使用hutool工具集推送数据

java 复制代码
    public static void main(String[] args) {
        String url = "http://localhost:4242/api/put";
        String username = "admin";
        String password = "123456";

        // 构建请求JSON数据
        String jsonData = "{\"metric\":\"point\",\"value\":40.34,\"tags\":{\"t1\":\"v1\",\"t2\":\"v2\"}}";

        // 发送POST请求
        HttpResponse response = HttpRequest.post(url)
                .basicAuth(username, password)
                .body(jsonData)
                .header("Content-Type", "application/json")
                .execute();

        // 获取响应
        int statusCode = response.getStatus();
        String responseBody = response.body();

        // 输出响应结果
        System.out.println("Response Code: " + statusCode);
        System.out.println("Response Body: " + responseBody);
    }
xml 复制代码
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-http</artifactId>
    <version>5.7.6</version>
</dependency>
相关推荐
计算机毕设VX:Fegn089520 小时前
计算机毕业设计|基于springboot + vue医院设备管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
Mr__Miss20 小时前
保持redis和数据库一致性(双写一致性)
数据库·redis·spring
Knight_AL21 小时前
Spring 事务传播行为 + 事务失效原因 + 传播行为为什么不用其他模式
数据库·sql·spring
倔强的石头_21 小时前
时序数据时代的“存储与分析困局”解析及金仓解决方案
数据库
计算机毕设VX:Fegn089521 小时前
计算机毕业设计|基于springboot + vue小型房屋租赁系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
倔强的石头_1 天前
场景化落地指南——金仓时序数据库在关键行业的应用实践
数据库
SelectDB1 天前
驾驭 CPU 与编译器:Apache Doris 实现极致性能的底层逻辑
运维·数据库·apache
zbguolei1 天前
MySQL根据身份证号码计算出生日期和年龄
数据库·mysql
马克学长1 天前
SSM校园图书借阅服务系统jd2z8(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·图书管理系统·ssm 框架·ssm 校园图书借阅系统
软件派1 天前
高斯数据库使用心得——从性能优化到行业实践的深度解析
数据库·oracle