**前置文章:**[Centos7.6安装Prometheus(普罗米修斯)监控](https://www.xiaoleizhang.com/index.php/archives/10/ "Centos7.6安装Prometheus(普罗米修斯)监控") **前置文章:**[Prometheus(普罗米修斯)安装Grafana可视化图形工具](https://www.xiaoleizhang.com/index.php/archives/23/ "Prometheus(普罗米修斯)安装Grafana可视化图形工具") **环境配置** |服务器|IP地址| | :------------: | :------------: | |Prometheus服务器|172.100.48.199| |grafana服务器|172.100.48.199| |fping-exporter服务器|172.100.48.199| ------------ ------------ # 一、安装部署fping-exporter,并验证 fping-exporter是一款非常轻量但又很强大的ping工具,通过docker部署fping-exporter作为监控节点,并通过prometheus获取fping-exporter提供的metrics,再由grafana出图,可快速搭建一套网络质量监控平台。 本文只介绍docker部署fping-exporter监测点的方法,因为众所周知的原因,推荐docker的形式。 先安装docker,这里就用yum安装了,并设置开机自启 ```shell yum install docker systemctl start docker.service systemctl enable docker.service ``` 再在服务器上创建docker ```shell docker run -d --name fping-exporter --restart=always -p 9605:9605 xiaoleizhang/fping-exporter:4.2 fping-exporter --fping=/usr/sbin/fping -c 15 -p 15 ``` --restart=always代表docker开机自启 -p 9605:9605端口映射 ```shell 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-exporter是否可以像node-exporter一样返回数据,以http请求的形式给监测点发探任务,可直接在浏览器执行 ```shell http://172.100.48.199:9605/probe?target=114.114.114.114 ``` probe是请求服务的路径,源码程序写死的,target是你要探测的目标地址,这里是要探测到114.114.114.114的网络质量 ***【注意】***发起探测后,因为默认是60秒发一次探测,所以发起后不会立刻返回结果,需要等待最多1分钟的时间,如果页面没有报错,只是空白,请反复刷新直到出现结果为止,如果超过1分钟仍没有结果或直接报非200错误,请检查部署。 如果出现类似下图的返回结果,就证明已经生效了: ![fping_exporter网页测试.png](https://www.xiaoleizhang.com/usr/uploads/2022/10/1274130631.png) ***【提示】***fping-exporter的监控指标说明: ```shell fping-exporter produces the following metrics: fping_sent_count: Number of sent probes # 发包数 fping_lost_count: Number of lost probes # 丢包数 fping_rtt_count: Number of measured latencies (successful probes) #发成功的包数量 fping_rtt_sum: Sum of measured latencies # 发包总耗时(除以发成功的包数量 等于平均延迟) fping_rtt: Summary of measured latencies # 每个包的延迟 ``` # 三、配置prometheus prometheus的教程我的前置文章里有,下面列出配置文件以及说明,prometheus作为中央调度,就是向fping-exporter发起任务,想探测哪些节点,就直接写到targets中即可 prometheus.yml 配置如下(在原先的job_name下新增,这个不是一个完整的配置,注意格式对齐): ```shell - job_name: fping metrics_path: /probe static_configs: - targets: #你想要监控的目的IP,这里我用两个公共dns地址举例 - "114.114.114.114" - "8.8.8.8" relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: 127.0.0.1:9605 #fping-exporter 服务的地址,因为是http的,所以也支持域名加端口的形式 ``` 重启prometheus后即可开始抓取fping-exporter检测点的数据,可以查看fping-exporter容器的日志信息,确认是否开始跑任务。 我这里重启prometheus是: ```shell systemctl restart prometheus.service ``` 查看容器日志 ```shell docker logs 9c6da23dab16 ``` 9c6da23dab16是你的容器id # 四、grafana配置 添加prometheus数据源在我的前置文章里都有,这里不再赘述(Data Sources / Prometheus) 直接添加图标dashboard 根据下面两张图写查询表达式(一个是延迟,一个是丢包率),并设置纵坐标的单位即可 ![延迟.png](https://www.xiaoleizhang.com/usr/uploads/2022/10/1986414599.png) ![丢包率.png](https://www.xiaoleizhang.com/usr/uploads/2022/10/582261050.png) 查询表达式的公式如下: ```shell fping_lost_count{job="fping",instance="目标ip"}/fping_sent_count{job="fping",instance="目标ip"} #丢包率=丢包数/总发包数 fping_rtt_sum{job="fping",instance="目标ip"}/fping_rtt_count。#平均延迟=总耗时/成功发包数 ``` 最后修改:2022 年 11 月 01 日 © 允许规范转载 赞 2 如果觉得我的文章对你有用,请随意赞赏
10 条评论
GitHub上有好几个fping exporter,请问楼主用的是哪个?
大佬大佬,请问一下你这个fping_exporter的docker 镜像从哪里获取的?我感觉使用4.2版本的镜像起的容器好像抓回来的数据有些问题(延迟数据都是0.032),表达式里面如果没有加上 *1000的话压根就不对头⌇●﹏●⌇
因为返回的是秒,grafanad面板的右边,改一下单位,就会自动传唤成毫秒了
您好,docker镜像是我从网上下载下来放在我的docker hub里的,如果您觉得4.2版本的镜像不适合,您可以从网上downloa其它版本的镜像试下。
大佬可以私聊请教一下吗?
有什么问题吗?
大佬好,请问使用prometheus加上fping_exporter对云服务间的网络延迟、丢包率进行监控。prometheus.yml的配置文件的编写是怎么样的?
您好,我文章里的“三”有写prometheus.yml 的配置呀,新增一个job就可以了,其它的配置都是按照安装时的配置文件一样的,我没修改过。OωO
丢包率,是不是应该丢包数/发包总数?
不好意思,打错了OωO,谢谢啊