通過上一篇[(六)Prometheus 監控 apache 服務 的學習,我們已經對 prometheus 做了一個傳統服務的監控,本篇詳細講解 Prometheus 自動發現主機并添加。
準備環境
# 這裡使用的是(四)Prometheus + Grafana 可視化 完成時的環境
centos 7
prometheus 運作正常
grafana 運作正常
[[email protected]-21 ~]# getenforce
Permissive
[[email protected]-21 ~]# ss -lntp |grep prometheus
LISTEN 0 128 :::9090 :::* users:(("prometheus",pid=10531,fd=6))
[[email protected]-21 ~]# ss -lntp |grep grafana
LISTEN 0 128 10.0.0.21:3000 *:* users:(("grafana-server",pid=10690,fd=7))
新開一台伺服器,做用戶端
# 關閉防火牆
[[email protected]-22 ~]# systemctl stop firewalld.service
# 修改 selinux 為警告模式
[[email protected]-22 ~]# setenforce 0
# 時間同步
[[email protected]-22 ~]# ntpdate ntp.aliyun.com
31 Mar 22:16:56 ntpdate[1872]: step time server 203.107.6.88 offset -43199.490573 sec
安裝 node_exporter 收集資料,點選下載下傳
# 本地上傳或下載下傳
[[email protected]-22 ~]# cd /opt/ ; mkdir node_exporter ; cd node_exporter
[[email protected]-22 node_exporter]# ls
node_exporter-0.18.1.linux-amd64.tar.gz
解壓
[[email protected]-22 node_exporter]# tar xf node_exporter-0.18.1.linux-amd64.tar.gz
[[email protected]-22 node_exporter]# ls
node_exporter-0.18.1.linux-amd64 node_exporter-0.18.1.linux-amd64.tar.gz
[[email protected]-22 node_exporter]# mv node_exporter-0.18.1.linux-amd64 /usr/local/node_exporter
[[email protected]-22 node_exporter]# cd !$
cd /usr/local/node_exporter
[[email protected]-22 node_exporter]# cp node_exporter /usr/local/bin
[[email protected]-22 node_exporter]# node_exporter
添加至開機自啟
# 添加為系統服務
[[email protected]-22 node_exporter]# vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/node_exporter/node_exporter
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
# 重新加載
[[email protected]-22 node_exporter]# systemctl daemon-reload
# 添加至開機自啟
[[email protected]-22 node_exporter]# systemctl enable node_exporter.service
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.
# 啟動服務
[[email protected]-22 node_exporter]# systemctl start node_exporter.service
# 檢視程序
[[email protected]-22 node_exporter]# ps -ef |grep node_exporter
root 13952 1 1 21:29 ? 00:00:00 /usr/local/node_exporter/node_exporter
root 13956 1799 0 21:29 pts/0 00:00:00 grep --color=auto node_exporter
# 檢視端口
[[email protected]-22 node_exporter]# ss -lntp |grep node_exporter
LISTEN 0 128 [::]:9100 [::]:* users:(("node_exporter",pid=13952,fd=3))
服務端添加配置檔案
[[email protected]-21 ~]# mkdir -p /usr/local/prometheus/target/{node,docker}
[[email protected]-21 ~]# vim /usr/local/prometheus/target/node/host_status.json
[
{
"targets": [ "10.0.0.22:9100" ],
"labels": {
"job": "node2-status",
"service": "node2"
}
}
]
修改 Prometheus 配置檔案
[[email protected]-21 ~]# vim /usr/local/prometheus/conf/prometheus.yml
39 - job_name: 'host-status'
40 file_sd_configs:
41 - files:
42 - "/usr/local/prometheus/target/node/host_status.json"
43 refresh_interval: 6s
重新開機 Prometheus
第一次引用,是以定義完成之後,需要重新開機一下,如果後續再添加節點,則直接寫入json檔案即可,無需重新開機Prometheus服務
[[email protected]-21 ~]# systemctl restart prometheus.service