简介目前很多在线应用都是使用prometheus进行监控。之前用smokeping做网络监控,但是当主机太多的时候,很容易丢失监控数据,于是想着直接用prometheus做监控。Exporterprometheus需要有对应的exporter来拉取数据。在github上查了一下,有一个fping-exporter(schweikert/fping-exporter)比较合适。这个导出器是用Go编写的,只需使用gitclone下载并编译即可运行。命令参数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-releaseyum-yinstallfping将编译好的二进制文件复制到/data/prometheus/fping-exporter,添加systemd服务文件vim/usr/lib/systemd/system/fping-exporter.service[Unit]Description=fping-exporterAfter=network.target[Service]Type=simpleWorkingDirectory=/data/prometheus/ExecStart=/data/prometheus/fping-exporter-f/usr/sbin/fping-p60-c10-l:9605LimitNOFILE=65536PrivateTmp=trueRestartSec=2StartLimitInterval=0Restart=always[Install]WantedBy=multi-user.target启动并设置bootsystemctldaemon-reloadsystemctlenablefping-exportersystemctlstartfping-exporter配置在prometheus中添加一个作业监控目录,我们可以在该目录下添加内容实现动态加载。vimprometheus.yml...-job_name:fping_defaultmetrics_path:/probescrape_interval:60sfile_sd_configs:-refresh_interval:61sfiles:-/data/prometheus/fping/*.jsonrelabel_configs:-source_labels:[__address__]target_label:__labam_target-source_labels:[__param_target_labels:[__param_target]instance-target_label:__address__replacement:192.168.1.8:9605replacement:192.168.1.8:9605这是我们fping-exporter的地址,重新加载一些prometheus进程,配置就会生效。kill-HUP[pid]配置监控项mkdir-p/data/prometheus/fpingvim/data/prometheus/fping/host.json[{"targets":["10.0.4.2"],"labels":{"instance":“10.0.4.2”,“工作”:“fping_exporter”}},{“目标”:[“10.0.4.3”],“标签”:{“实例”:“10.0.4.3”,“工作”:“fping_exporter"}}本项目提供了一个grafana面板,可以直接导入到grafana中查看监控数据。综上所述,fping-exportere有问题。如果有很多监控主机,它们会被放在一个命令中执行,导致有时无法获取监控数据。在github上分叉了一段代码并对其进行了修改(Jalright/fping-exporter)。如果监控对象比较多,可以用这个编译部署。
