docker安装victoriametrics(单机版)

docker安装victoriametrics

  • 1、单机版安装
  • 2、victoriametrics增删改查
    • 2.1 、插入数据
      • 2.1.1 组装数据插入victoriametrics(java代码插入)
      • 2.1.2 Prometheus数据插入victoriametrics
      • 2.1.3 官网push到victoriametrics写法
    • 2.2 、查询
      • 2.2.1 、Instant query(即时查询)
      • 2.2.2 、Range query(范围查询)
      • 2.2.3 、在vmui查询
      • 2.2.4、victoriametrics返回的resultType
    • 2.3、什么是series?series个数计算
    • 2.4、MetricsQL
      • 2.4.1、过滤
      • 2.4.3、聚合函数
    • 2.5、修改数据
    • 2.6、删除数据

1、单机版安装

拉取镜像

docker pull victoriametrics/victoria-metrics

创建容器

docker run  --restart=always  -d -v /data/victoria-metrics-data:/victoria-metrics-data \
-p 8428:8428 --name=vm victoriametrics/victoria-metrics

然后可以访问:

http://ip:8428
#我的本机访问地址
http://192.168.52.128:8428

2、victoriametrics增删改查

2.1 、插入数据

2.1.1 组装数据插入victoriametrics(java代码插入)

一般,我们都会自己写代码采集数据,然后组装手动推送到victoriametrics,
这种方式也是用的最多的。

注意下面的参数和url都要加上单引号,如果不加,在服务器执行curl时插入不成功也不报错。

#指定时间戳写法(用的最多的写法)
curl -d 'cpu_usage_vm{name="bar",age="女"} 559.6 1733321837' -X POST 'http://localhost:8428/api/v1/import/prometheus'
#默认当前时间戳插入
curl -d 'cpu_usage_vm{name="bar",age="女"} 5.6' -X POST 'http://localhost:8428/api/v1/import/prometheus'

java代码实现插入

引入pom

        <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>4.6.5</version></dependency>
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.http.Method;
public class Test{public static void main(String[] args) throws Exception {for (int i = 1; i < 100; i++) {String body = "cpu_usage_vm{name=\"bar\",age=\"女\"} " + (i + 0.6) + " " + System.currentTimeMillis() / 1000;HttpRequest request = HttpRequest.get("http://192.168.52.128:8428/api/v1/import/prometheus");request.body(body);System.out.println(body);request.setMethod(Method.POST);HttpResponse execute = request.execute();System.out.println(execute.body());//每隔一秒插入一条数据Thread.sleep(1000);}}}

2.1.2 Prometheus数据插入victoriametrics

victoriametrics可以用作 Prometheus 的长期存储,也就是Prometheus 拉取的数据,存入到victoriametrics里。
Prometheus 配置如下:
remote_write:- url: http://<victoriametrics-addr>:8428/api/v1/write

2.1.3 官网push到victoriametrics写法

#对应官网push数据的写法
curl -d '{"metric":{"__name__":"foo","job":"node_exporter"},"values":[0,1,2],"timestamps":[1733298568000,1733298569000,1733298570000]}' -X POST 'http://localhost:8428/api/v1/import'

2.2 、查询

2.2.1 、Instant query(即时查询)

参考官网给出的即使查询问:点击进入官网

语法:

GET | POST /api/v1/query?query=...&time=...&step=...&timeout=...

eg:

curl  'http://192.168.52.128:8428/prometheus/api/v1/query?query=cpu_usage_vmc&step=1m'

参数解释

1、query --MetricsQL expression.
2、time --以秒精度的时间戳查询。缺省当前时间戳。时间参数可以以多种允许的格式指定,具体去官网查下。
3、timeout --查询超时时间。例如,timeout=5s。5秒查不到数据,就超时取消查询。
4、step --数据点之间的间隔,必须从范围查询返回。step缺省默认5m。
查询在start、start+step、start+2*step、结束时间戳处执行。
step不好理解,下面举例讲解:4.1、插入以下数据:
cpu_usage_vmc{name="zg",age="男"} 99 1733405421
cpu_usage_vmc{name="zg",age="男"} 31 1733405361
cpu_usage_vmc{name="zg",age="男"} 66 1733405301
cpu_usage_vmc{name="zg",age="男"} 69 1733405241
cpu_usage_vmc{name="zg",age="男"} 49 1733405181
cpu_usage_vmc{name="zg",age="男"} 2 1733405121
cpu_usage_vmc{name="zg",age="男"} 44 1733405061
cpu_usage_vmc{name="zg",age="男"} 22 1733405001
cpu_usage_vmc{name="zg",age="男"} 29 17334049414.2、查询语句
curl 'http://192.168.52.128:8428/api/v1/query?query=cpu_usage_vmc&time=1733404941'
value查出是29,因为time时间戳刚好能匹配上。
如果时间戳time=1733404940,此时查询出来的就是null,因为实际查询范围是1733404940和1733404940-5*60直间,自然没值。
如果时间戳time=1733405060,value查出是22,因为实际查询是1733405060和1733405060-5*60,这个查询范围有多个值,但是会取和time=1733405060最近的一个值,这个最近的值是向下取的,不是向上取,也就是22。
别忘记即时查询只返回series的单个数据样本。

即时查询可以返回多个series,但每个series总是只有一个数据样本。即时查询用于以下场景:

1、获取最后记录的值;
2、汇总函数,如count_over_time;
3、用于警报和记录规则评估;
4、在Grafana中绘制统计数据或表格面板。

2.2.2 、Range query(范围查询)

语法:

GET | POST /api/v1/query_range?query=...&start=...&end=...&step=...&timeout=... 

eg:
注意,范围查询,尽量加上开始的时间戳。

curl 'http://192.168.52.128:8428/api/v1/query_range?query=cpu_usage_vm&step=1m&start=1733404940'

参数解释

1、start --开始时间戳。尽量指定个范围。
2、end --结束时间戳。如果未设置结束时间,则结束时间会自动设置为当前时间。
3、step --数据点之间的间隔,必须从范围查询返回。step缺省默认5m。
查询在start、start+step、start+2*step、结束时间戳处执行。
step不好理解,下面举例讲解:3.1、插入以下数据:cpu_usage_vmd{name="zg",age="男"} 82 1733406112cpu_usage_vmd{name="zg",age="男"} 77 1733406052cpu_usage_vmd{name="zg",age="男"} 27 1733405992cpu_usage_vmd{name="zg",age="男"} 22 1733405932cpu_usage_vmd{name="zg",age="男"} 18 1733405872cpu_usage_vmd{name="zg",age="男"} 78 1733405812cpu_usage_vmd{name="zg",age="男"} 60 1733405752
curl 'http://192.168.52.128:8428/api/v1/query_range?query=cpu_usage_vmd&start=1733406052'
如果时间戳start=1733405932,此时会查2条数据,因为会先取时间戳最近值,最近值是向下取,
此时查询条件是,1733406052-5*601733406052,值为22。 
然后在查17334060521733406052+5*60的值,切记此时取1733406052+5*60最近值,值为82

2.2.3 、在vmui查询

#访问地址:
http://192.168.52.128:8428/vmui

直接在浏览器输入指标名称,即可查询。

cpu_usage_vm
或者
cpu_usage_vm{}

vmui查询页面解释:

#我的本机访问地址
http://192.168.52.128:8428/vmui
右上角可以设置step的值,单位m分钟,单位s秒。
还可以设置查询时间范围。LAST 1 HOUR 表示最近一小时的数据。
Gtaph可以显示多天数据,Json只返回一条数据,本身即时查询也就只返回series的一个样本值。

在这里插入图片描述

2.2.4、victoriametrics返回的resultType

VictoriaMetrics是一个高性能的时序数据库和监控系统,它支持多种查询语言,比如PromQL。
当你向VictoriaMetrics发送查询时,它会返回结果,这个结果的类型取决于查询的类型和返回数据的情况。
以下是一些可能的resultType值:
1、matrix:表示返回的是一系列包含时间戳和值的数据点的集合。
2、vector:表示返回的是一系列包含特定时间戳的单个数据点。
3、scalar:表示返回的是一个单一的数字,通常是一个简单的计数或总和。
4、string:表示返回的是单个字符串,通常用于返回错误信息或警告。

2.3、什么是series?series个数计算

相同measurement、相同tag的数据属于一个series集合。
series就是不同tag列,进行排列组合。比如一个表中有两个tag字段A和B。 
A字段有有3种值,B字段有4种值,则series个数 = 3*4=12个。

2.4、MetricsQL

VictoriaMetrics 提供了一种用于执行读取查询的特殊查询语言 - MetricsQL。
它是一种类似 PromQL 的查询语言,具有一组强大的函数和特性,专门用于处理时间序列数据。
MetricsQLPromQL 向后兼容,因此它共享大多数查询概念。

2.4.1、过滤

在 instant query 和 range query 部分中,我们已经使用 MetricsQL 来获取指标cpu_usage_vm的数据。
它就像在查询中编写指标名称一样简单:

eg(适用instant query 和 range query):

#不带过滤查询1
curl  'http://192.168.52.128:8428/prometheus/api/v1/query?query=cpu_usage_vm&step=1m'
#不带过滤查询2
curl  'http://192.168.52.128:8428/prometheus/api/v1/query?query=cpu_usage_vm{}&step=1m'
#查询name=bar的数据
curl  'http://192.168.52.128:8428/prometheus/api/v1/query?query=cpu_usage_vm{name="bar"}&step=1m'

更多过滤条件查询参考官网,点击进入:

2.4.3、聚合函数

很简单,官网可以查看下。
点击进入

2.5、修改数据

victoriametrics本身不支持直接修改数据。
如果你非要修改,同一个series并且时间戳相等,再次推送,修改value后再次推送,则会修改操作

#第一次推送到victoriametrics
cpu_usage_vm{name="bwar",age="男"} 2.3 1733451580#第二次推送到victoriametrics,则达到修改的效果
cpu_usage_vm{name="bwar",age="男"} 3.3 1733451580

2.6、删除数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/34880.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

趣讲TCP三次握手

一、TCP三次握手简介 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP连接中&#xff0c;只有两方进行通信&#xff0c;它使用校验和、确认和重传机制来保证数据的可靠传输。…

攻防世界 ctf刷题 新手区1-10

unserialize3 因为我上个笔记写了 php返序列化 所以先趁热打铁 看这个题目名字 我们就知道是 反序列化呀 因为flag有值所以 我们先输个 111 看看有没有线索 没线索但是这边 有个发现就是他是使用get方式传参的 可能他会把我们的输入 进行传入后台有可能进行反…

股指期货基差的影响因素有哪些?

在股指期货交易中&#xff0c;有一个重要的概念叫做“基差”。简单来说&#xff0c;基差就是股指期货价格与其对应的现货价格之间的差异。比如&#xff0c;我们现在有IC2401股指期货&#xff0c;它挂钩的是中证500指数。如果IC2401的价格是5244&#xff0c;而中证500指数的价格…

【单片机基础知识】MCU三种启动方式(Boot选择)[主Flash/系统存储器(BootLoader)/嵌入式SRAM]——老版

请跳转到最新版&#xff1a; 【单片机开发】MCU三种启动方式(Boot选择)[主Flash/系统存储器(BootLoader)/嵌入式SRAM]-CSDN博客 参考资料&#xff1a; MCU的三种启动方式 - EdgeAI Lab 立芯嵌入式的视频 在SRAM中运行代码 - EdgeAI Lab 利用 Boot 选择不同的启动方式&…

frp内网穿透的配置与设置

FRP&#xff08;Fast Reverse Proxy&#xff09;是一个高性能的反向代理应用&#xff0c;可以实现内网穿透功能。它帮助你将内网的服务暴露到公网&#xff0c;无需公网IP和端口映射&#xff0c;非常适合需要穿透防火墙、NAT的场景。以下是 FRP 内网穿透的配置和设置方法。 ###…

图数据库 | 13、图数据库架构设计——高性能计算架构再续

书接上文 图数据库 | 12、图数据库架构设计——高性能计算架构​​​​​​。昨天老夫就图数据库架构设计中的 实时图计算系统架构、图数据库模式与数据模型、核心引擎如何处理不同的数据类型、图计算引擎中的数据结构 这四块内容进行了展开讲解&#xff0c;今儿继续往下、往深…

一、web基础和http协议

前言 https://www.baidu.com/&#xff1a;URL&#xff08;是一种万维网寻址网址&#xff09; https://&#xff1a;协议&#xff0c;加密的http&#xff0c;加密的超文本传输协议&#xff0c;在数据传输之前要通过整数进行身份验证&#xff0c;验证通过才可以进行数据传输。 …

基于java+SpringBoot+Vue的实验室管理系统设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven mysql5.7或8.0等等组成&#x…

win7 双机调试

32位 CMD&#xff1a;关闭指令(开启10-10-12分页) bcdedit /set pae ForceDisable bcdedit /set nx AlwaysOff 开启指令(开启2-9-9-12分页) bcdedit /set pae forceEnable bcdedit /set nx OptIn一件事情是配置好虚拟机&#xff0c;我这里使用…

Linux进程优先级

1.孤儿进程 父子进程关系中&#xff0c;如果父进程先退出&#xff0c;子进程要被1号进程领养&#xff0c;这个被领养的进程为孤儿进程(1号进程为操作系统)&#xff0c;不领养如果变成僵尸进程就会有弊端&#xff0c;只有父进程和操作系统可以回收子进程&#xff0c;孤儿进程是…

力扣1401. 圆和矩形是否有重叠

用矢量计算&#xff1a; class Solution { public:bool checkOverlap(int radius, int xCenter, int yCenter, int x1, int y1, int x2, int y2) {//矩形中心float Tx(float)(x1x2)/2;float Ty(float)(y1y2)/2;//强行进行对称操作&#xff0c;只考虑第一象限if(xCenter<Tx)…

GESP202303 一级【长方形面积】题解(AC)

》》》点我查看「视频」详解》》》 AC_Code #include <bits/stdc.h> using namespace std;int main() {int n;cin >> n;int cnt 0;for(int i 1; i < n; i )for(int j i; j < n; j )if(i * j n)cnt ;cout << cnt;return 0; }》》》点我查看「视频」…

QT 中 QMessageBox 的简单用法

效果 思路 // 创建一个question弹出对话框&#xff0c;添加两个按钮&#xff1a;Yes和NoQMessageBox *box new QMessageBox(QMessageBox::Question, "提示", "确认删除的信息吗&#xff1f;", QMessageBox::Yes | QMessageBox::No, this);box->button(…

航空美食新升级,光明肉业携手东航食品打造经典辣肉面新篇章

在航空餐饮日益注重品质与创新的大环境下&#xff0c;各大航空公司纷纷在美食领域下功夫&#xff0c;力求为乘客提供更加多元化、高品质的餐饮体验。近日&#xff0c;东航那碗面再次成为行业焦点&#xff0c;其经典辣肉面在光明肉业的助力下实现了“创新”升级&#xff0c;为乘…

Mybatis-Flex的简单入门,Mybatis-Flex和其它框架对比

前言 最近做项目&#xff0c;项目组必须要用Mybatis-Flex&#xff0c;然后自己去学了一下&#xff0c;给大家进行分享。 MyBatis-Flex 是 MyBatis 的一个增强工具&#xff0c;旨在简化 MyBatis 的使用并提高开发效率。它通过提供一系列的便捷方法和特性来减少重复代码的编写&am…

离线安装ollama到服务器

搜了很多教程不满意,弄了半天才弄好&#xff0c;这里记录下&#xff0c;方便以后的人用&#xff0c;那个在线下载太慢&#xff0c;怕不是得下载到明年。 一.从官网下在liunx版的tgz安装包 Releases ollama/ollama (github.com) 查看自己的服务器信息&#xff08;参考 https:/…

六款实用的开发工具的分享

文章目录 开发工具的分享一、nignx playground&#xff1a;模拟生成nginx示例二、Json在线可视化工具三、pycharm技巧四、web页面与服务器交互工具-gotty五、定时任务管理工具六、node版本管理工具 开发工具的分享 一、nignx playground&#xff1a;模拟生成nginx示例 https:…

Docker 安装 Yapi

Docker 安装系列 Docker已安装。 1、场景Yapi使用的MongoDB用户信息 1.1 创建自定义 Docker 网络 首先&#xff0c;创建一个自定义的 Docker 网络&#xff0c;以便 MongoDB 和 YApi 容器可以相互通信 [rootflexusx-328569 data]# docker network create yapi-networ…

【LeetCode】每日一题 2024_12_5 捕获黑皇后需要的最少移动次数(分类讨论)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动&#xff01; 题目&#xff1a;捕获黑皇后需要的最少移动次数 代码与解题思路 先读题&#xff1a;题目给了三枚棋子&#xff0c;目标就是求出能在几步之内将皇后吃掉 具体的分类讨论见代码注释 核心思路&#xff1a;…

关于数据库连接数突然上升问题,如何进行排查

1、假设您有一个 Java 应用程序 myapp.jar&#xff0c;您可以使用以下命令启动它&#xff0c;并启用 JMX 远程管理&#xff1a; java -Dcom.sun.management.jmxremote \-Dcom.sun.management.jmxremote.port8888 \-Dcom.sun.management.jmxremote.rmi.port8080 \-Dcom.sun.man…