简介
目前线上很多应用都是使用prometheus进行监控。之前是使用smokeping做网络监控,但是,主机一多就容易丢失监控数据,就想着直接使用prometheus进行监控。
exporter
prometheus 拉取数据数据需要有对应的exporter,github上查了一下,有一个fping-exporter(schweikert/fping-exporter)比较适合。
这个exporter是用Go写的,直接git clone下载下来进行编译就可以运行了。
命令参数
fping-exporter[OPTIONS] ApplicationOptions: -l,--listen=[HOST]:PORTListenaddress(default::9605) -p,--period=SECSPeriodinseconds,shouldmatchPrometheusscrapeinterval(default:60) -f,--fping=PATHFpingbinarypath(default:/usr/bin/fping) -c,--count=NNumberofpingstosendateachperiod(default:20) HelpOptions: -h,--helpShowthishelpmessage
这里可以看到,其实需要系统安装fping命令,然后将fping执行程序指定给程序。
部署fping-exporter
我这边使用的CentOS7进行部署,所以可以直接使用yum安装epel-release,然后在epel源里面就有fping。
yum-yinstallepel-release yum-yinstallfping
将编译好的二进制文件拷贝到/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-p60-c10-l:9605 LimitNOFILE=65536 PrivateTmp=true RestartSec=2 StartLimitInterval=0 Restart=always [Install] WantedBy=multi-user.target
启动并设置开机启动
systemctldaemon-reload systemctlenablefping-exporter systemctlstartfping-exporter
配置
在prometheus添加一个job监听目录,我们就可以在目录底下添加内容,实现动态加载了。
vimprometheus.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),如果监控对象比较多,可以使用这个进行编译部署。
转载请注明:IT运维空间 » 运维技术 » Prometheus网络监控之Fping-Exporter
发表评论