Prometheus网络监控之Fping-Exporter
<p><strong><span> 简介</span></strong></p>
<p>
目前线上很多应用都是使用prometheus进行监控。之前是使用smokeping做网络监控,但是,主机一多就容易丢失监控数据,就想着直接使用prometheus进行监控。</p>
<center>
<img style="max-width:100%!important;height:auto!important;"title="Prometheus网络监控之Fping-Exporter" alt="Prometheus网络监控之Fping-Exporter" src="https://zhuji.jb51.net/uploads/img/202305/fe83ae7e756884e2bb9ea977b7909723.jpg">
</center>
<p>
<strong><span>exporter</span></strong></p>
<p>
prometheus 拉取数据数据需要有对应的exporter,github上查了一下,有一个fping-exporter(schweikert/fping-exporter)比较适合。</p>
<p>
这个exporter是用Go写的,直接git clone下载下来进行编译就可以运行了。</p>
<center>
<img style="max-width:100%!important;height:auto!important;"title="Prometheus网络监控之Fping-Exporter" alt="Prometheus网络监控之Fping-Exporter" src="https://zhuji.jb51.net/uploads/img/202305/6b4b7074990b7732788680c45f44fd89.jpg">
</center>
<p>
<strong><span>命令参数</span></strong></p>
<blockquote>
<p class="alt">
<span><span>fping-exporter </span></span></p>
<p>
<span> </span></p>
<p class="alt">
<span>Application Options: </span></p>
<p>
<span> -l, <span class="comment">--listen=:PORT Listen address (default: :9605)</span><span> </span></span></p>
<p class="alt">
<span> -p, <span class="comment">--period=SECS Period in seconds, should match Prometheus scrape interval (default: 60)</span><span> </span></span></p>
<p>
<span> -f, <span class="comment">--fping=PATH Fping binary path (default: /usr/bin/fping)</span><span> </span></span></p>
<p class="alt">
<span> -c, <span class="comment">--count=N Number of pings to send at each period (default: 20)</span><span> </span></span></p>
<p>
<span> </span></p>
<p class="alt">
<span>Help Options: </span></p>
<p>
<span> -h, <span class="comment">--help Show this help message</span><span> </span></span></p>
</blockquote>
<p>
这里可以看到,其实需要系统安装fping命令,然后将fping执行程序指定给程序。</p>
<p>
<strong><span>部署fping-exporter</span></strong></p>
<p>
我这边使用的CentOS7进行部署,所以可以直接使用yum安装epel-release,然后在epel源里面就有fping。</p>
<center>
<img style="max-width:100%!important;height:auto!important;"title="Prometheus网络监控之Fping-Exporter" alt="Prometheus网络监控之Fping-Exporter" src="https://zhuji.jb51.net/uploads/img/202305/ab31b455e82c3622fc6d9327df442ac2.jpg">
</center>
<blockquote>
<p class="alt">
<span><span>yum -y install epel-release </span></span></p>
<p>
<span>yum -y install fping </span></p>
</blockquote>
<p>
将编译好的二进制文件拷贝到/data/prometheus/fping-exporter,添加systemd服务文件</p>
<blockquote>
<p class="alt">
<span><span>vim /usr/lib/systemd/system/fping-exporter.service </span></span></p>
</blockquote>
<blockquote>
<p class="alt">
<span><span> </span></span></p>
<p>
<span>Description=fping-exporter </span></p>
<p class="alt">
<span><span class="keyword">After</span><span>=network.target </span></span></p>
<p>
<span> </span></p>
<p class="alt">
<span> </span></p>
<p>
<span>Type=simple </span></p>
<p class="alt">
<span>WorkingDirectory=/data/prometheus/ </span></p>
<p>
<span>ExecStart=/data/prometheus/fping-exporter -f /usr/sbin/fping -p 60 -c 10 -l :9605 </span></p>
<p class="alt">
<span>LimitNOFILE=65536 </span></p>
<p>
<span>PrivateTmp=<span class="keyword">true</span><span> </span></span></p>
<p class="alt">
<span>RestartSec=2 </span></p>
<p>
<span>StartLimitInterval=0 </span></p>
<p class="alt">
<span>Restart=always </span></p>
<p>
<span> </span></p>
<p class="alt">
<span> </span></p>
<p>
<span>WantedBy=multi-<span class="func">user</span><span>.target </span></span></p>
</blockquote>
<p>
启动并设置开机启动</p>
<blockquote>
<p class="alt">
<span><span>systemctl daemon-reload </span></span></p>
<p>
<span>systemctl enable fping-exporter </span></p>
<p class="alt">
<span>systemctl start fping-exporter </span></p>
</blockquote>
<p>
<strong><span>配置</span></strong></p>
<p>
在prometheus添加一个job监听目录,我们就可以在目录底下添加内容,实现动态加载了。</p>
<blockquote>
<p class="alt">
<span><span>vim prometheus.yml </span></span></p>
</blockquote>
<br><blockquote>
<p class="alt">
<span><span>... </span></span></p>
<p>
<span> - job_name: fping_default </span></p>
<p class="alt">
<span> metrics_path: /probe </span></p>
<p>
<span> scrape_interval: 60s </span></p>
<p class="alt">
<span> file_sd_configs: </span></p>
<p>
<span> - refresh_interval: 61s </span></p>
<p class="alt">
<span> files: </span></p>
<p>
<span> - /data/prometheus/fping/*.json </span></p>
<p class="alt">
<span> relabel_configs: </span></p>
<p>
<span> - source_labels: </span></p>
<p class="alt">
<span> target_label: __param_target </span></p>
<p>
<span> - source_labels: </span></p>
<p class="alt">
<span> target_label: instance </span></p>
<p>
<span> - target_label: __address__ </span></p>
<p class="alt">
<span> replacement: 192.168.1.8:9605 </span></p>
</blockquote>
<p>
replacement: 192.168.1.8:9605 这个就是我们fping-exporter的地址,</p>
<p>
重载一些prometheus进程,配置就生效了。</p>
<blockquote>
<p class="alt">
<span><span>kill -HUP </span></span></p>
</blockquote>
<p>
<strong><span>配置监控项</span></strong></p>
<blockquote>
<p class="alt">
<span><span>mkdir -p /data/prometheus/fping </span></span></p>
<p>
<span>vim /data/prometheus/fping/host.json </span></p>
</blockquote>
<br><blockquote>
<p class="alt">
<span><span>[ </span></span></p>
<p>
<span> { </span></p>
<p class="alt">
<span> <span class="string">"targets"</span><span>: [ </span></span></p>
<p>
<span> <span class="string">"10.0.4.2"</span><span> </span></span></p>
<p class="alt">
<span> ], </span></p>
<p>
<span> <span class="string">"labels"</span><span>: { </span></span></p>
<p class="alt">
<span> <span class="string">"instance"</span><span>: </span><span class="string">"10.0.4.2"</span><span>, </span></span></p>
<p>
<span> <span class="string">"job"</span><span>: </span><span class="string">"fping_exporter"</span><span> </span></span></p>
<p class="alt">
<span> } </span></p>
<p>
<span> }, </span></p>
<p class="alt">
<span> { </span></p>
<p>
<span> <span class="string">"targets"</span><span>: [ </span></span></p>
<p class="alt">
<span> <span class="string">"10.0.4.3"</span><span> </span></span></p>
<p>
<span> ], </span></p>
<p class="alt">
<span> <span class="string">"labels"</span><span>: { </span></span></p>
<p>
<span> <span class="string">"instance"</span><span>: </span><span class="string">"10.0.4.3"</span><span>, </span></span></p>
<p class="alt">
<span> <span class="string">"job"</span><span>: </span><span class="string">"fping_exporter"</span><span> </span></span></p>
<p>
<span> } </span></p>
<p class="alt">
<span> } </span></p>
</blockquote>
<p>
这个项目上面就有提供了grafana面板,可以直接导入到grafana里面就可以看到监控数据了。</p>
<center>
<img style="max-width:100%!important;height:auto!important;"title="Prometheus网络监控之Fping-Exporter" alt="Prometheus网络监控之Fping-Exporter" src="https://zhuji.jb51.net/uploads/img/202305/65cea06ab90f939617a670f668493aca.jpg">
</center>
<p>
<strong><span>总结</span></strong></p>
<p>
这个fping-exportere有一个问题,如果监控主机有很多的时候,它都会拼凑在一个命令里面去执行,导致有时候监控数据获取不到。</p>
<p>
在github上Fork了一个代码进行了修改(Jalright/fping-exporter),如果监控对象比较多,可以使用这个进行编译部署。</p>
頁:
[1]