时序数据库-06-02-vm VictoriaMetrics install on docker 安装 vm
时序数据库系列
时序数据库-05-TDengine 是一款开源、高性能、云原生的时序数据库 (Time-Series Database, TSDB)
时序数据库-05-TDengine Time-Series Database, TSDB
时序数据库-05-TDengine windows11 WSL 安装实战笔记 docker
时序数据库-06-01-vm VictoriaMetrics 快速、经济高效的监控解决方案和时间序列数据库
时序数据库-06-02-vm VictoriaMetrics install on docker 安装 vm
时序数据库-06-03-vm VictoriaMetrics java 整合
时序数据库-06-04-vm VictoriaMetrics storage 存储原理简介
时序数据库-06-05-vm VictoriaMetrics cluster 集群原理
时序数据库-06-06-vm VictoriaMetrics cluster 集群访问方式
VictoriaMetrics
VictoriaMetrics 是一款快速、经济高效且可扩展的监控解决方案和时间序列数据库。
VictoriaMetrics提供了二进制发布、Docker镜像、Snap包以及源代码的形式供用户使用。
VictoriaMetrics的集群版本可以在此处找到。
WSL 的 docker 管理
在Linux系统中,使用Docker通常涉及几个基本步骤,包括安装Docker、启动Docker服务、获取(pull)Docker镜像以及运行(run)容器。
以下是使用sudo snap install docker
命令安装Docker后,运行Docker容器的基本步骤:
安装Docker:您已经通过
snap
安装了Docker。sudo snap install docker
启动Docker服务:安装完成后,您需要启动Docker服务。
sudo systemctl start snap.docker.dockerd.service
或者使用简写:
sudo systemctl start docker
设置Docker开机启动:如果您希望Docker在开机时自动启动,可以使用以下命令:
sudo systemctl enable snap.docker.dockerd.service
获取Docker镜像:您可以从Docker Hub或其他Docker镜像仓库拉取(pull)所需的镜像。例如,要拉取Ubuntu的官方镜像:
sudo docker pull ubuntu
运行Docker容器:使用拉取的镜像运行一个新的容器。例如,运行一个Ubuntu容器并启动一个交互式shell:
sudo docker run -it ubuntu /bin/bash
这里,
-it
参数让Docker提供一个交互式终端,ubuntu
是指定的镜像名,/bin/bash
是您希望在容器内部运行的命令。管理Docker容器:您可以使用Docker命令行工具来管理容器,例如列出正在运行的容器:
sudo docker ps
或者查看所有的容器(包括未运行的):
sudo docker ps -a
退出容器:在容器内部,您可以通过输入
exit
命令或按Ctrl+D
来退出当前的shell会话。停止容器:当您退出容器的交互式会话时,容器通常会停止运行。要手动停止一个正在运行的容器,可以使用:
sudo docker stop container_name_or_id
删除容器:如果需要删除一个容器,可以使用:
sudo docker rm container_name_or_id
请注意,如果您使用的是较新版本的Docker,可能需要将用户添加到docker组,以便无需使用sudo
来运行Docker命令:
sudo usermod -aG docker ${USER}
然后,您需要注销并重新登录,或重新启动系统,以使组变更生效。
以上步骤应该可以帮助您在安装Docker后运行容器。
如果遇到任何问题,请参考Docker的官方文档或社区论坛获取帮助。
docker 版本
$ docker -v
Docker version 24.0.5, build 24.0.5-0ubuntu1~22.04.1
install
创建文件夹:
mkdir -p /home/dh/victoria-metrics-data:/victoria-metrics-data
下载运行:
$ sudo docker run -d -p 8428:8428 -v /home/dh/victoria-metrics-data:/victoria-metrics-data --name victoria-metrics victoriametrics/victoria-metrics:v1.95.1
对应的效果:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3b265f2c6f96 victoriametrics/victoria-metrics:v1.95.1 "/victoria-metrics-p…" 50 seconds ago Up 49 seconds 0.0.0.0:8428->8428/tcp, :::8428->8428/tcp victoria-metrics
WSL 重新启动失败问题
通过 docker ps 没看到,但是重新启动失败。
发现是 docker ps -a
才能看到全部的全部的,包括已经停止的服务。
查看所有服务
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
a9b88e77fe5e deepdiver/docker-oracle-xe-11g "/bin/sh -c 'sed -i …" 3 days ago Exited (255) 16 hours ago 0.0.0.0:49160->22/tcp, :::49160->22/tcp, 0.0.0.0:49161->1521/tcp, :::49161->1521/tcp, 0.0.0.0:49162->8080/tcp, :::49162->8080/tcp
oracle
3b265f2c6f96 victoriametrics/victoria-metrics:v1.95.1 "/victoria-metrics-p…" 9 days ago Exited (255) 3 days ago 0.0.0.0:8428->8428/tcp, :::8428->8428/tcp
victoria-metrics
b349fcd8e1b1 tdengine/tdengine "/tini -- /usr/bin/e…" 6 weeks ago Created
xenodochial_hugle
6649ff543d1d tdengine/tdengine "/tini -- /usr/bin/e…" 6 weeks ago Exited (255) 3 weeks ago 0.0.0.0:6030->6030/tcp, :::6030->6030/tcp, 0.0.0.0:6041->6041/tcp, :::6041->6041/tcp, 0.0.0.0:6043-6049->6043-6049/tcp, :::6043-6049->6043-6049/tcp, 0.0.0.0:6043-6049->6043-6049/udp, :::6043-6049->6043-6049/udp admiring_pare
关闭不需要的服务
不太需要,服务可以停止。6649ff543d1d 换成对应的 id
docker stop 6649ff543d1d
启动 vm
启动命令:
docker start 3b265f2c6f96
确认:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3b265f2c6f96 victoriametrics/victoria-metrics:v1.95.1 "/victoria-metrics-p…" 9 days ago Up 2 seconds 0.0.0.0:8428->8428/tcp, :::8428->8428/tcp victoria-metrics
如何访问呢?
没有表的概念
这里对于vm的初学者(mysql的非初学者)需要做出解释,像关系型数据库,有服务之后还需要创建连接,还需要建库,建表,然后不管用原生sql还是什么其它封装了sql的框架组件进行查询;
但是vm拉起服务后就结束了,它是非关系型数据库没有表的概念,用个不完全贴切的比喻,就像一锅“大杂烩”;
那么数据怎么插?怎么查?
vm 的基本概念
想要回答这个问题,就必须要明白几个概念(只是quickstart,还有很多概念和语法请自行参阅官方文档):
指标:这是vm中数据的标识,查vm就是查vm中的指标值
标签:指标可以有多个标签,主要用来按照某种逻辑筛选同类型指标
那么,指标名+标签 => 唯一确定了一个时间序列,也就是一个时间序列上的指标值,下面这个例子的指标名就是CPU_OCCUPIED,代表cpu占用率,{machine="2",process_id="1"}就是标签,代表了机器id和进程id,也就是说这个指标记录了id为2的机器上进程id为1的进程在一段时间序列中每分钟的cpu占用率
# CPU_OCCUPIED{machine="2",process_id="1"}
timestamp value
12:01 66
12:02 65
12:03 78
所以数据是存在由指标和标签确定的一个时间序列中的,只有你向vm中插入指标值,这个指标才会存在!
查询则需要用vm提供的ui客户端中()写metricql/promql查询和插入数据:
一旦容器启动,可以通过访问
来访问VictoriaMetrics的Web界面。
可以使用该界面来管理和监控你的指标数据。
curl 测试简单例子
插入
JSON 数据格式
{
// metric contans metric name plus labels for a particular time series
"metric":{
"__name__": "metric_name", // [vm json 格式](https://docs.victoriametrics.com/single-server-victoriametrics/#json-line-format)
> [vm 如何导入 json 格式数据](https://docs.victoriametrics.com/single-server-victoriametrics/#how-to-import-data-in-json-line-format)
VictoriaMetrics 在 `/api/v1/import` 接受 JSON 行格式的数据,并在 /`api/v1/export` 导出此格式的数据。
格式遵循JSON 流概念,例如每行包含 JSON 对象,其指标数据采用以下格式():
{
metric contans metric name plus labels for a particular time series
"metric":{
"name": "metric_name", # this is metric name
# Other labels for the time series
"label1": "value1",
"label2": "value2",
...
"labelN": "valueN"
},
values contains raw sample values for the given time series
"values": [1, 2.345, -678],
timestamps contains raw sample UNIX timestamps in milliseconds for the given time series
every timestamp is associated with the value at the corresponding position
"timestamps": [1549891472010,1549891487724,1549891503438]
}
所以我们插入数据的url和准备的数据才会是那样写的,__name__就是指标名,label就是标签名,value就是指标值,timestamp就是时间戳,只需要把字典json.dumps变成json串就可以了
所以我们也可以使用 postman / curl 发送一个请求。
# 参考资料
https://github.com/VictoriaMetrics/VictoriaMetrics
https://hertzbeat.com/zh-cn/docs/start/victoria-metrics-init/
https://blog.csdn.net/qq_47501059/article/details/135111923
https://blog.csdn.net/weixin_45771607/article/details/135452800
[时序数据库](https://blog.csdn.net/ggaofengg/article/details/129344212)