VictoriaMetrics的高可用二进制方式部署

参考文章实现:Prometheus联邦集群+VictoriaMetrics集群搭建部署

1.基本信息

涉及机器列表,机器均为本地虚拟机

192.168.56.108
192.168.56.109

方案实现如下
在这里插入图片描述
涉及模块介绍

  • vmstorage: 数据存储节点,负责存储时序数据
  • vmselect: 数据查询节点,负责接收用户查询请求,向vmstorage查询时序数据
  • vminsert: 数据插入节点,负责接收用户插入请求,向vmstorage写入时序数据

2.下载cluster版本

wget  https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.81.2/victoria-metrics-linux-amd64-v1.81.2-cluster.tar.gz
tar -xf victoria-metrics-linux-amd64-v1.81.2-cluster.tar.gz -C /usr/local/victoria_metrics/

3.配置vmstorage-prod 组件服务

mkdir -p /root/victoria_metrics/vmstorage-data #生产环境建议换成磁盘目录,换性能更好的ssd硬盘,集群所有节点都要执行

# vim /etc/systemd/system/vmstorage.service

[Unit]
Description=Vmstorage Server
After=network.target

[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/victoria_metrics/vmstorage-prod -loggerTimezone Asia/Shanghai -storageDataPath /root/victoria_metrics/vmstorage-data -httpListenAddr :8482 -vminsertAddr :8400 -vmselectAddr :8401

[Install]
WantedBy=multi-user.target

同步启动文集到其他节点

# 配置同步集群其它节点
scp /etc/systemd/system/vmstorage.service root@192.168.56.109:/etc/systemd/system/
# 二进制方式启动vmstorage
systemctl enable --now vmstorage.service

4.部署 vminsert-prod 组件

# vim /etc/systemd/system/vminsert.service


[Unit]
Description=Vminsert Server
After=network.target

[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/victoria_metrics/vminsert-prod -httpListenAddr :8480 -storageNode=192.168.56.108:8400, 192.168.56.109:8400

[Install]
WantedBy=multi-user.target

同步启动文集到其他节点

# 配置同步集群其它节点
scp /etc/systemd/system/vminsert.service root@192.168.56.109:/etc/systemd/system/
# 二进制方式启动vminsert
systemctl enable --now vminsert.service

5.部署 vmselect-prod 组件

# vim /etc/systemd/system/vmselect.service

[Unit]
Description=Vminsert Server
After=network.target

[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/victoria_metrics/vmselect-prod -httpListenAddr :8481 -storageNode=192.168.56.108:8401,192.168.56.109:8401

[Install]
WantedBy=multi-user.target

同步启动文集到其他节点

# 配置同步集群其它节点
scp /etc/systemd/system/vmselect.service root@192.168.56.109:/etc/systemd/system/
# 二进制方式启动vmselect
systemctl enable --now vmselect.service

6.验证服务端口

curl http://192.168.56.108:8480/metrics
curl http://192.168.56.108:8481/metrics
curl http://192.168.56.108:8482/metrics

curl http://192.168.56.109:8480/metrics
curl http://192.168.56.109:8481/metrics
curl http://192.168.56.109:8482/metrics

效果如下
请添加图片描述
请添加图片描述
请添加图片描述

7.配置Prometheus远程写入和远程读取victoriametrics集群

# vi /root/prometheus/prometheus.yml
remote_write:
  - url: http://192.168.56.108:8480/insert/0/prometheus

remote_read:
  - url: http://192.168.56.108:8481/select/0/prometheus

重启docker
请添加图片描述

8.配置grafana的VictoriaMetrics数据源

请添加图片描述

URL => http://192.168.56.108:8481/select/0/prometheus
04-01
### 关于 vmalert 的概述 `vmalert` 是 VictoriaMetrics 提供的一个组件,用于执行告警规则并发送通知。它类似于 Prometheus 的 `Alertmanager`,但具有更轻量级的设计和更高的性能[^1]。 以下是关于配置和使用的详细介绍: --- ### 安装与启动 安装 `vmalert` 可通过二进制文件或容器镜像完成。假设已下载二进制文件,则可以通过以下命令运行服务: ```bash ./vmalert -config.file=/path/to/vmalert.rules.yml ``` 上述命令指定了一个名为 `vmalert.rules.yml` 的配置文件路径,该文件定义了所有的告警规则以及目标数据源。 --- ### 配置文件结构 #### 数据源设置 在配置文件中,需指定VictoriaMetrics实例作为数据源。例如: ```yaml datasources: - url: http://localhost:8428/api/v1/write name: defaultDS ``` 此处的 `url` 应指向实际部署VictoriaMetrics 实例地址[^2]。 #### 告警规则定义 告警规则通常基于 PromQL 查询表达式编写。下面是一个简单的例子: ```yaml groups: - name: example rules: - alert: HighRequestLatency expr: job:request_latency_seconds:mean5m{job="myapp"} > 0.5 for: 10m labels: severity: page annotations: summary: "High request latency on {{ $labels.instance }}" description: "{{ $value }}% requests are slower than 500ms" ``` 此规则表示当查询条件满足时触发告警,并附加标签和描述信息以便进一步处理[^3]。 --- ### 发送通知 为了使告警生效,还需要配置接收端的通知方式。比如集成 Slack 或 Email 等渠道。这一步可通过修改配置中的 `receivers` 和 `route` 节点实现: ```yaml notifiers: - type: slack config: webhook_url: https://hooks.slack.com/services/XXX/YYYYY/ZZZZZ routes: - receiver: 'slack' matchers: - severity='page' ``` 以上片段展示了如何将严重级别标记为 `page` 的事件转发至特定 Slack 渠道[^4]。 --- ### 示例代码展示完整的配置文件 综合前面提到的内容,这里给出一份完整的 `vmalert.rules.yml` 文件样例: ```yaml global: evaluation_interval: 60s datasources: - url: http://victoriametrics:8428/ name: defaultDS groups: - name: service_alerts interval: 1m rules: - alert: InstanceDown expr: up == 0 for: 5m labels: severity: critical annotations: summary: "Instance is down ({{ $labels.instance }})" description: "The instance has been down for more than 5 minutes." notifiers: - type: email config: to: admin@example.org from: alerts@example.org smarthost: smtp.example.org:587 auth_username: user@example.org auth_password: password routes: - receiver: 'email' group_by: ['instance'] ``` --- ### 注意事项 - **PromQL 支持**:虽然大部分标准 PromQL 表达式都能正常工作,但仍建议查阅官方文档确认兼容性列表[^5]。 - **高可用架构设计**:如果计划大规模应用,请考虑多副本部署方案以增强可靠性。 - **监控状态页面访问**:启用内置 Web UI 后可直观查看当前活动告警及其历史记录,默认监听端口为 `8080`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值