簡介
目前線上很多應用都是使用prometheus進行監控。之前是使用smokeping做網絡監控,但是,主機一多就容易丟失監控數據,就想著直接使用prometheus進行監控。

exporter
prometheus 拉取數據數據需要有對應的exporter,github上查了一下,有一個fping-exporter(schweikert/fping-exporter)比較適合。
這個exporter是用Go寫的,直接git clone下載下來進行編譯就可以運行了。

命令參數
fping-exporter [OPTIONS]
Application Options:
-l, --listen=[HOST]:PORT Listen address (default: :9605)
-p, --period=SECS Period in seconds, should match Prometheus scrape interval (default: 60)
-f, --fping=PATH Fping binary path (default: /usr/bin/fping)
-c, --count=N Number of pings to send at each period (default: 20)
?
Help Options:
-h, --help Show this help message
這里可以看到,其實需要系統安裝fping命令,然后將fping執行程序指定給程序。
部署fping-exporter
我這邊使用的CentOS7進行部署,所以可以直接使用yum安裝epel-release,然后在epel源里面就有fping。

yum -y install epel-release
yum -y install fping
將編譯好的二進制文件拷貝到/data/prometheus/fping-exporter,添加systemd服務文件
vim /usr/lib/systemd/system/fping-exporter.service
[Unit]
Description=fping-exporter
After=network.target
?
[Service]
Type=simple
WorkingDirectory=/data/prometheus/
ExecStart=/data/prometheus/fping-exporter -f /usr/sbin/fping -p 60 -c 10 -l :9605
LimitNOFILE=65536
PrivateTmp=true
RestartSec=2
StartLimitInterval=0
Restart=always
?
[Install]
WantedBy=multi-user.target
?啟動并設置開機啟動
systemctl daemon-reload
systemctl enable fping-exporter
systemctl start fping-exporter
配置
在prometheus添加一個job監聽目錄,我們就可以在目錄底下添加內容,實現動態加載了。
vim prometheus.yml
...
- job_name: fping_default
metrics_path: /probe
scrape_interval: 60s
file_sd_configs:
- refresh_interval: 61s
files:
- /data/prometheus/fping/*.json
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.168.1.8:9605
replacement: 192.168.1.8:9605 這個就是我們fping-exporter的地址,
重載一些prometheus進程,配置就生效了。
kill -HUP [pid]
配置監控項
mkdir -p /data/prometheus/fping
vim /data/prometheus/fping/host.json
[
{
"targets": [
"10.0.4.2"
],
"labels": {
"instance": "10.0.4.2",
"job": "fping_exporter"
}
},
{
"targets": [
"10.0.4.3"
],
"labels": {
"instance": "10.0.4.3",
"job": "fping_exporter"
}
}
這個項目上面就有提供了grafana面板,可以直接導入到grafana里面就可以看到監控數據了。

總結
這個fping-exportere有一個問題,如果監控主機有很多的時候,它都會拼湊在一個命令里面去執行,導致有時候監控數據獲取不到。
在github上Fork了一個代碼進行了修改(Jalright/fping-exporter),如果監控對象比較多,可以使用這個進行編譯部署。