共计 1929 个字符,预计需要花费 5 分钟才能阅读完成。
导读 | 上次说到我们不用 docker,而是使用 containerd 作为 CRI 了。没想到,连监控告警这一块也换了。以前我们使用的 prometheus 进行监控数据的采集、存储和提供查询,alertmanager 进行告警推送,同时使用了 grafana 做数据展示。那么现在呢,我们选择使用 OpenTelemetry 和 VictoriaMetrics。那么这两者究竟是何方神圣呢? 请允许我慢慢道来。考虑到我也是刚接触,所以今天先给大家介绍一下 VictoriaMetrics。OpenTelemetry 后续再做介绍。 |
上次说到我们不用 docker,而是使用 containerd 作为 CRI 了。没想到,连监控告警这一块也换了。以前我们使用的 prometheus 进行监控数据的采集、存储和提供查询,alertmanager 进行告警推送,同时使用了 grafana 做数据展示。那么现在呢,我们选择使用 OpenTelemetry 和 VictoriaMetrics。那么这两者究竟是何方神圣呢? 请允许我慢慢道来。考虑到我也是刚接触,所以今天先给大家介绍一下 VictoriaMetrics。OpenTelemetry 后续再做介绍。
注:后续 VictoriaMetrics 简称为 vm
这里我们看官网的描述。如下:
- VictoriaMetrics is a fast, cost-effective and scalable monitoring solution
- and time series database
翻译过来就是说,vm 是一个快速、实用和可扩展的监控方案和时序数据库。思考一下:prometheus 也是时序数据库,两者会不会有什么不一样呢?
要说 vm 的特性,可太多了。举几个例子:
- 可以作为 prometheus 长期存储的一个方案。我们知道 prometheus 默认只会保留最近 15 天的数据,如果要保留更长时间的数据,需要把数据写到远端存储中去
- 当使用 grafana 时,可以把其数据源 prometheus 可以被替换为 vm,因为 vm 也支持 prometheus 查询 APi
- 它实现了基于 PromQL 的查询语言,即 MetricsQL,并且在 PromQL 基础上做了改进
- 在处理百万比别数据时,使用内存资源比 Thanos、Promtheus 更少
- …
那么 vm 有哪些组件呢,(cluster) 架构又是怎么样的呢?
主要组件说明:
- vmstorage 负责存储时序数据以及提供查询
- vmselect 从 vmstorage 获取数据返回给查询数据的客户端,支持 PromeQL
- vminsert 通过 remote write API 将数据存储到 vmstorage
其他组件说明:
- vmui 提供了一个 UI 供查询数据和问题排查
- vmalert 用户告警
- vmagent 用户数据采集
- vmbackup 用于数据备份
- vmrestore 用于数据恢复
- …
vm 可以通过多种方式安装,如二进制、docker 镜像以及源码。可根据场景进行选择。如果在 k8s 中进行安装,我们可以直接使用 operator 来进行安装。下面重点说一下安装过程中的一些注意事项。
一个最小的集群必须包含以下节点:
- 一个 vmstorage 单节点,另外要指定 -retentionPeriod 和 -storageDataPath 两个参数
- 一个 vminsert 单节点,要指定 -storageNode=
- 一个 vmselect 单节点,要指定 -storageNode=
注:高可用情况下,建议每个服务至少有个两个节点
在 vmselect 和 vminsert 前面需要一个负载均衡,比如 vmauth、nginx,同时要求:
- 以 /insert 开头的请求必须要被路由到 vminsert 节点的 8480 端口
- 以 /select 开头的请求必须要被路由到 vmselect 节点的 8481 端口
注:各服务的端口可以通过 -httpListenAddr 进行指定
建议为集群安装监控
如果是在一个主机上进行安装测试集群,vminsert、vmselect 和 vmstorage 各自的 -httpListenAddr 参数必须唯一,vmstorage 的 -storageDataPath、-vminsertAddr、-vmselectAddr 这几个参数必须有唯一的值。
当 vmstorage 通过 -storageDataPath 目录大小小于通过 -storage.minFreeDiskSpaceBytes 指定的可用空间时,会切换到只读模式;vminsert 停止向这类节点发送数据,转而将数据发送到其他可用 vmstorage 节点。