优秀的编程知识分享平台

网站首页 > 技术文章 正文

prometheus网络监控之fping-exporter

nanyue 2025-02-20 17:16:25 技术文章 5 ℃

简介

目前线上很多应用都是使用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),如果监控对象比较多,可以使用这个进行编译部署。

Tags:

最近发表
标签列表