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.rhkb.cn/news/487931.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】系统信息和状态命令

步骤 1&#xff1a;显示系统信息 命令&#xff1a; uname -a 1.打开终端。 2.输入命令并按回车键。 3.观察&#xff1a;输出将显示包括内核版本、主机名、硬件架构等在内的系统信息。 步骤 2&#xff1a;显示或设置系统的主机名 命令&#xff1a; hostname 1.打开终端。…

RabbitMq死信队列延迟交换机

架构图 配置 package com.example.demo.config;import org.springframework.amqp.core.*; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class DeadLetterConfig {public String …

学生信息管理系统(简化版)数据库部分

使用Mysql&#xff0c;与navicat工具 下面是mysql创建的代码&#xff0c;可做必要修改 -- 创建学生学籍信息表 CREATE TABLE StudentEnrollment (-- 学号&#xff0c;作为主键student_id VARCHAR(8) NOT NULL,-- 学生姓名stu_name VARCHAR(8) NOT NULL,-- 学生性别gender VARC…

新手上路,学Go还是Python

对于新手来说&#xff0c;Go和Python都是很好的编程语言&#xff0c;它们各有特点&#xff0c;以下是详细的对比来帮助你决定先学哪一个&#xff1a; 一、语法和学习难度 Python 语法简洁易懂&#xff1a;Python以其简洁、优雅的语法而闻名&#xff0c;代码的可读性很高。例如…

信号处理:概念、应用、领域、方法

信号处理是一个广泛的领域&#xff0c;涉及对各种类型信号&#xff08;如音频信号、图像信号、生物信号、通信信号等&#xff09;的分析、操作和变换。信号处理的主要目标是获取有用信息、增强信号质量、消除噪声、提取特征以及实现数据 compression等。信号处理可以分为模拟信…

Socket编程-tcp

1. 前言 在tcp套接字编程这里&#xff0c;我们将完成两份代码&#xff0c;一份是基于tcp实现普通的对话&#xff0c;另一份加上业务&#xff0c;client输入要执行的命令&#xff0c;server将执行结果返回给client 2. tcp_echo_server 与udp类似&#xff0c;前两步&#xff1…

go语言的sdk项目搭建与git 操作标签tag并推送至远程仓库

在搭建 SDK 项目并结合 Git 操作标签&#xff08;Tag&#xff09;时&#xff0c;通常会涉及项目初始化、版本管理、Git 标签的创建与管理等内容。以下是一个完整的步骤指南&#xff0c;帮助您搭建 SDK 项目并学习如何使用 Git 标签。 ### 1. **搭建 SDK 项目** 首先&#xff…

Android13 USB 串口默认授权

一&#xff09;场景需求 项目中使用到了can协议控制车机功能&#xff0c;can 直接转串口&#xff0c;用USB转串口工具 cn.wch.uartlib 来实现. can 板子通过usb 插入到机器上面&#xff0c;那就是usb 协议了。 遇到问题&#xff1a; 插入can 板的usb 到机器上后&#xff0c;直…

【数据库】E-R模型、函数依赖、范式

2. 东方货运公司数据库的样本数据如下。 表名称&#xff1a;卡车 车号 货运站编号 类型 总行程 购入日期 1001 501 1 59002.7 11/06/2000 1002 502 2 54523.8 11/08/2000 1003 501 2 32116.6 09/29/2001 1004 502 2 3256.9 …

保姆级教学 uniapp绘制二维码海报并保存至相册,真机正常展示图片二维码

一、获取二维码 uni.request({url: https://api.weixin.qq.com/wxa/getwxacode?access_token${getStorage("token")},responseType: "arraybuffer",method: "POST",data: {path: "/pages/index/index"},success(res) {// 转换为 Uint…

JAVA安全—SpringBoot框架MyBatis注入Thymeleaf模板注入

前言 之前我们讲了JAVA的一些组件安全&#xff0c;比如Log4j&#xff0c;fastjson。今天讲一下框架安全&#xff0c;就是这个也是比较常见的SpringBoot框架。 SpringBoot框架 Spring Boot是由Pivotal团队提供的一套开源框架&#xff0c;可以简化spring应用的创建及部署。它提…

【数据结构】动态规划-基础篇

针对动态规划问题&#xff0c;我总结了以下5步&#xff1a; 确定dp数组以及下标的含义&#xff1b; 递推公式&#xff1b; dp数组如何初始化&#xff1b; 遍历顺序&#xff1b; 打印dp数组&#xff08;用来debug&#xff09;&#xff1b; 以上5步适用于任何动态规划问题&#x…

十一、容器化 vs 虚拟化-Docker 使用

文章目录 前言一、Docker Hello World二、Docker 容器使用三、Docker 镜像使用四、Docker 容器连接五、Docker 仓库管理六、Docker Dockerfile七、Docker Compose八、Docker Machine九、Swarm 集群管理 前言 Docker 使用‌ Docker 容器使用、镜像使用、容器连接、仓库管理、Do…

Java-22 深入浅出 MyBatis - 手写ORM框架3 手写SqlSession、Executor 工作原理

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…

EasyPlayer.js播放器如何在iOS上实现低延时直播?

随着流媒体技术的迅速发展&#xff0c;H5流媒体播放器已成为现代网络视频播放的重要工具。其中&#xff0c;EasyPlayer.js播放器作为一款功能强大的H5播放器&#xff0c;凭借其全面的协议支持、多种解码方式以及跨平台兼容性&#xff0c;赢得了广泛的关注和应用。 那么要在iOS上…

OpenAI深夜官宣!为期十二天的圣诞惊喜活动发布AI模型大招!Sora、满血o1和高级语音或将发布

OpenAI深夜官宣&#xff01;为期十二天的圣诞惊喜活动发布AI模型大招&#xff01;Sora、满血o1和高级语音或将发布 大家好&#xff0c;我是猫头虎&#x1f63a;&#xff0c;今天我们来聊聊最近科技圈的大新闻——OpenAI 深夜官宣的圣诞惊喜活动&#xff01;这次 OpenAI 的动作…

【JAVA高级篇教学】第二篇:使用 Redisson 实现高效限流机制

在高并发系统中&#xff0c;限流是一项非常重要的技术手段&#xff0c;用于保护后端服务&#xff0c;防止因流量过大导致系统崩溃。本文将详细介绍如何使用 Redisson 提供的 RRateLimiter 实现分布式限流&#xff0c;以及其原理、使用场景和完整代码示例。 目录 一、什么是限流…

leetcode_547 省份数量

该题主要运用了图的连通性 接着使用染色法解决该问题 染色法:标记所有节点为false 访问后 将其标记位true class Solution {int n; // 代表n个数据bool colors[201]; // 标记是否访问到void dfs(vector<vector<int>>& isConnected, int u) { // …

多系统对接的实现方案技术分析

前言 随着信息化和大数据时代的到来&#xff0c;数据资产变得至关重要&#xff0c;企业纷纷上线多种软件系统和移动端应用以适应这一变化。这些系统和应用虽然发挥了各自的优势&#xff0c;但也导致了信息孤岛问题。为了解决这一问题&#xff0c;数据中台和异构系统集成技术应…

基于SpringBoot的“滴答拍摄影项目”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“滴答拍摄影项目”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 滴答拍摄影项目结构图 管理员登录首页界面图 用…