6、节点硬件资源监控 node_exporter
https://prometheus.io/download/#node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz
1、配置安装 node_exporter 软件
# 解压文件
tar xf node_exporter-1.0.1.linux-amd64.tar.gz
cd node_exporter-1.0.1.linux-amd64/
# 编写 system 启动文件
vim /etc/systemd/system/prometheus-node.service
[Unit]
Description=Prometheus Node
After=network.target prometheus.service
[Service]
Type=simple
ExecStart=/srv/node_exporter-1.0.1.linux-amd64/node_exporter --web.listen-address=0.0.0.0:9100
[Install]
WantedBy=multi-user.target
# 脚本
#!/bin/bash
echo -e "\e[1;31m开始安装系统监控工具--------------------------- \e[0m"
if [ -d /opt/monitor ];then
cd /opt/monitor
wget http://x.x.x.x:8080/monitor/node_exporter-1.0.1.linux-amd64.tar.gz
else
mkdir /opt/monitor && cd /opt/monitor
wget http://x.x.x.x:8080/monitor/node_exporter-1.0.1.linux-amd64.tar.gz
fi
tar xf node_exporter-1.0.1.linux-amd64.tar.gz
cd node_exporter-1.0.1.linux-amd64
tee > /etc/systemd/system/node-export.service << EOF
[Unit]
Description=Prometheus Node
After=network.target prometheus.service
[Service]
Type=simple
ExecStart=/opt/monitor/node_exporter-1.0.1.linux-amd64/node_exporter --web.listen-address=0.0.0.0:9100
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable node-export.service
systemctl start node-export.service
systemctl status node-export.service
将 node_exporter 服务设为开机自启并启动
systemctl daemon-reload
systemctl enable prometheus-node.service
systemctl start prometheus-node.service
查看 node_exporter 服务 (默认端口为: 9100)
2、Prometheus 中集成node_exporter
修改 Prometheus 的配置文件 (prometheus.yml),添加 node 服务 (在 scrape_configs 属性下添加)
vim prometheus.yml
- job_name: 'node'
static_configs:
- targets: ['x.x.x.x:9100']
# 重启 prometheus 服务
systemctl restart prometheus.service
3、如果是consul 如下配置
[root@bogon node_exporter-1.0.1.linux-amd64]# cat node.json
{
"ID": "node-instance-x.x.x.x",
"Name": "node-instance-x.x.x.x",
"Tags": [
"es_instance"
],
"Address": "x.x.x.x",
"Port": 9100,
"Meta": {
"instance": "es-instance-x.x.x.x",
"role": "test-it-es-cluster-prod"
},
"EnableTagOverride": false,
"Check": {
"HTTP": "http://x.x.x.x:9100/metrics",
"Interval": "10s"
},
"Weights": {
"Passing": 10,
"Warning": 1
}
}
###################### 参数讲解###############
### 参数说明
# id : 注册ID 在consul中为唯一标识
# name :Service名称
# address:自动注册绑定ip
# port:自动注册绑定端口
# tags:注册标签,可多个
# checks : 健康检查
# http: 检查数据来源
# interval: 检查时间间隔
# http://x.x.x.x:8500/v1/agent/service/register consul注册接口
#################### 配置过滤#################
我们可以配置 relabel_configs 来实现标签过滤,只加载符合规则的服务。以上边为例,可以通过过滤 __meta_consul_tags 标签为 test 的服务,relabel_config 向 Consul 注册服务的时候,只加载匹配 regex 表达式的标签的服务到自己的配置文件。修改 prometheus.yml 配置如下:
- job_name: 'consul-prometheus'
consul_sd_configs:
- server: 'x.x.x.x:8500'
services: []
relabel_configs:
- source_labels: [__meta_consul_tags]
regex: .*test.*
action: keep
这里的 relabel_configs 配置作用为丢弃源标签中 meta_consul_tags 不包含 test 标签的服务,meta_consul_tags 对应到 Consul 服务中的值为 "tags": ["test"],默认 consul 服务是不带该标签的,从而实现过滤。
curl -X PUT --data @node.json http://x.x.x.x:8500/v1/agent/service/register
# 模板 (8919)11461
https://grafana.com/grafana/dashboards/8919
curl --request PUT http://x.x.x.x:8500/v1/agent/service/deregister/node-instance-10.105.193.41
node-instance-x.x.x.x1 ID
3、grafana 配置
导入官方模板:
ID: 8919