Github地址:https://github.com/VictoriaMetrics/VictoriaMetrics
官网地址:https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html
1. prometheus远端存储VictoriaMetrics
1.1 组件介绍
组件名字 | 描述 |
---|---|
vminsert | 写入组件,vminsert负责接收数据写入并根据对度量名称及其所有标签的一致hash结果将数据分散写入不同的后端vmstorage节点之间,vminsert默认端口8480 |
vmstorage | 存储原始数据并返回给定时间范围内给定标签过滤器的查询数据,默认端口8482 |
vmselect | 查询组件,连接vmstorage,默认端口8481 |
vmagent-可选 | 一个很小但功能很强大的代理,它可以从node_exporter各种来源收集度量数据,并将它们存储在VictoriaMetrics或任何其他支持远程写协议的与prometheus兼容的存储系统中,有点prometheus server的意向 |
vmalert-可选 | 替换prometheus server,以VictoriaMetrics为数据源,基于兼容prometheus的告警规则,判断数据是否异常,并将产生的通知发送给alertmanager |
vmgateway-可选 | 读写VictoriaMetrics数据的代理网关,可实现限速和访问控制等功能,目前为企业版组件 |
vmctl-可选 | VictoriaMetrics的命令行工具,目前主要用于将prometheus、opentsdb等数据源的数据迁移到VictoriaMetrics |
2.部署VictoriaMetrics集群
2.1 环境介绍
软件 | 描述 |
---|---|
prometheus | 10.103.236.199,prometheus-server |
vm1 | 10.103.236.20,vminsert、vmstorage、vmselect |
vm2 | 10.103.236.21,vminsert、vmstorage、vmselect |
vm3 | 10.103.236.22,vminsert、vmstorage、vmselect |
node1 | 10.103.236.203,node_export |
2.2 下载
bash
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.111.0/victoria-metrics-linux-amd64-v1.111.0-cluster.tar.gz
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.111.0/vmutils-linux-amd64-v1.111.0.tar.gz
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.111.0/victoria-metrics-linux-amd64-v1.111.0.tar.gz
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.111.0/victoria-metrics-linux-amd64-v1.111.0-cluster.tar.gz
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.111.0/vmutils-linux-amd64-v1.111.0.tar.gz
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.111.0/victoria-metrics-linux-amd64-v1.111.0.tar.gz
2.3 部署
采用二进制部署
部署vmstorage-prod组件
- 解压(
所有节点执行
)
bash
tar zxvf victoria-metrics-linux-amd64-v1.111.0-cluster.tar.gz -C /usr/local/bin
tar zxvf victoria-metrics-linux-amd64-v1.111.0-cluster.tar.gz -C /usr/local/bin
- 创建数据目录和配置目录(
所有节点执行
)
bash
mkdir -p /data/VictoriaMetrics
mkdir -p /etc/VictoriaMetrics
mkdir -p /data/VictoriaMetrics
mkdir -p /etc/VictoriaMetrics
- 配置systemd
bash
cat > /etc/systemd/system/vmstorage.service <<EOF
[Unit]
Description=Vmstorage Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vmstorage-prod -retentionPeriod=15d -loggerTimezone Asia/Shanghai -dedup.minScrapeInterval=30s -loggerLevel INFO -storageDataPath /data/VictoriaMetrics -httpListenAddr :8482 -vminsertAddr :8400 -vmselectAddr :8401
Restart=always
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/systemd/system/vmstorage.service <<EOF
[Unit]
Description=Vmstorage Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vmstorage-prod -retentionPeriod=15d -loggerTimezone Asia/Shanghai -dedup.minScrapeInterval=30s -loggerLevel INFO -storageDataPath /data/VictoriaMetrics -httpListenAddr :8482 -vminsertAddr :8400 -vmselectAddr :8401
Restart=always
[Install]
WantedBy=multi-user.target
EOF
- 启动
bash
systemctl daemon-reload
systemctl enable vmstorage.service --now
systemctl daemon-reload
systemctl enable vmstorage.service --now
- 查看
bash
[root@Rocky ~]# ss -ntlp| grep -E "8482|8400|8401"
LISTEN 0 2048 0.0.0.0:8400 0.0.0.0:* users:(("vmstorage-prod",pid=4045,fd=6))
LISTEN 0 2048 0.0.0.0:8401 0.0.0.0:* users:(("vmstorage-prod",pid=4045,fd=7))
LISTEN 0 2048 0.0.0.0:8482 0.0.0.0:* users:(("vmstorage-prod",pid=4045,fd=8))
[root@Rocky ~]# ss -ntlp| grep -E "8482|8400|8401"
LISTEN 0 2048 0.0.0.0:8400 0.0.0.0:* users:(("vmstorage-prod",pid=4045,fd=6))
LISTEN 0 2048 0.0.0.0:8401 0.0.0.0:* users:(("vmstorage-prod",pid=4045,fd=7))
LISTEN 0 2048 0.0.0.0:8482 0.0.0.0:* users:(("vmstorage-prod",pid=4045,fd=8))
部署vminsert-prod组件
- systemd
bash
cat > /etc/systemd/system/vminsert.service <<EOF
[Unit]
Description=Vmsinsert Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vminsert-prod -httpListenAddr=:8480 -storageNode=10.103.236.20:8400,10.103.236.21:8400,10.103.236.22:8400
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/systemd/system/vminsert.service <<EOF
[Unit]
Description=Vmsinsert Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vminsert-prod -httpListenAddr=:8480 -storageNode=10.103.236.20:8400,10.103.236.21:8400,10.103.236.22:8400
[Install]
WantedBy=multi-user.target
EOF
- 启动
bash
systemctl daemon-reload
systemctl enable vminsert.service --now
systemctl daemon-reload
systemctl enable vminsert.service --now
- 查看
bash
[root@k8s-master01 ~]# ss -tnlp | grep 8480
LISTEN 0 16384 *:8480 *:* users:(("vminsert-prod",pid=3219,fd=3))
[root@k8s-master01 ~]# ss -tnlp | grep 8480
LISTEN 0 16384 *:8480 *:* users:(("vminsert-prod",pid=3219,fd=3))
部署vmselect-prod组件
- systemd
bash
cat > /etc/systemd/system/vmselect.service <<EOF
[Unit]
Description=Vmselect Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vmselect-prod -httpListenAddr :8481 -storageNode=10.103.236.20:8401,10.103.236.21:8401,10.103.236.22:8401 -dedup.minScrapeInterval=30s -loggerTimezone "Asia/Shanghai" -loggerLevel INFO
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/systemd/system/vmselect.service <<EOF
[Unit]
Description=Vmselect Server
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/tmp
ExecStart=/usr/local/bin/vmselect-prod -httpListenAddr :8481 -storageNode=10.103.236.20:8401,10.103.236.21:8401,10.103.236.22:8401 -dedup.minScrapeInterval=30s -loggerTimezone "Asia/Shanghai" -loggerLevel INFO
[Install]
WantedBy=multi-user.target
EOF
- 启动
bash
systemctl daemon-reload
systemctl enable vmselect.service --now
systemctl daemon-reload
systemctl enable vmselect.service --now
- 查看
bash
[root@k8s-node01 ~]# ss -tnlp | grep 8481
LISTEN 0 16384 *:8481 *:* users:(("vmselect-prod",pid=4277,fd=3))
[root@k8s-node01 ~]# ss -tnlp | grep 8481
LISTEN 0 16384 *:8481 *:* users:(("vmselect-prod",pid=4277,fd=3))
验证服务
bash
curl http://10.103.236.199:8480/metrics
curl http://10.103.236.199:8481/metrics
curl http://10.103.236.199:8482/metrics
-- 有返回数据则证明成功
curl http://10.103.236.199:8480/metrics
curl http://10.103.236.199:8481/metrics
curl http://10.103.236.199:8482/metrics
-- 有返回数据则证明成功
2.4 配置prometheus
yml
############ vm ###################
remote_write:
- url: http://192.168.2.10:8480/insert/0/prometheus/api/v1/write
queue_config:
capacity: 50000
max_shards: 1000
min_shards: 100
max_samples_per_send: 1000
batch_send_deadline: 180s
min_backoff: 3s
max_backoff: 30s
############ vm ###################
remote_write:
- url: http://192.168.2.10:8480/insert/0/prometheus/api/v1/write
queue_config:
capacity: 50000
max_shards: 1000
min_shards: 100
max_samples_per_send: 1000
batch_send_deadline: 180s
min_backoff: 3s
max_backoff: 30s
2.5 配置grafana
- 添加数据
- 填写vmselect地址,这里填写
slb
http://10.103.236.21:8481/select/0/prometheus
http://10.103.236.21:8481/select/0/prometheus
保存
- 导入node-exporter模板
16098