Prometheus網(wǎng)絡(luò)監(jiān)控之Fping-Exporter
簡介
目前線上很多應(yīng)用都是使用prometheus進(jìn)行監(jiān)控。之前是使用smokeping做網(wǎng)絡(luò)監(jiān)控,但是,主機(jī)一多就容易丟失監(jiān)控數(shù)據(jù),就想著直接使用prometheus進(jìn)行監(jiān)控。
exporter
prometheus 拉取數(shù)據(jù)數(shù)據(jù)需要有對應(yīng)的exporter,github上查了一下,有一個fping-exporter(schweikert/fping-exporter)比較適合。
這個exporter是用Go寫的,直接git clone下載下來進(jìn)行編譯就可以運(yùn)行了。

命令參數(shù)
- 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
這里可以看到,其實(shí)需要系統(tǒng)安裝fping命令,然后將fping執(zhí)行程序指定給程序。
部署fping-exporter
我這邊使用的CentOS7進(jìn)行部署,所以可以直接使用yum安裝epel-release,然后在epel源里面就有fping。

- yum -y install epel-release
- yum -y install fping
將編譯好的二進(jìn)制文件拷貝到/data/prometheus/fping-exporter,添加systemd服務(wù)文件
- 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
啟動并設(shè)置開機(jī)啟動
- systemctl daemon-reload
- systemctl enable fping-exporter
- systemctl start fping-exporter
配置
在prometheus添加一個job監(jiān)聽目錄,我們就可以在目錄底下添加內(nèi)容,實(shí)現(xiàn)動態(tài)加載了。
- 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進(jìn)程,配置就生效了。
- kill -HUP [pid]
配置監(jiān)控項(xiàng)
- 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"
- }
- }
這個項(xiàng)目上面就有提供了grafana面板,可以直接導(dǎo)入到grafana里面就可以看到監(jiān)控數(shù)據(jù)了。

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