写点什么

Ping Exporter -- Prometheus

用户头像
耳东
关注
发布于: 2 小时前

在使用 Prometheus 的过程中,我们经常有需要监控 Ping 结果的需求,这个时候我们可以使用 Ping Exporter 来实现,官方网址 https://github.com/czerwonk/ping_exporterPing Exporter 的发行遵循 MIT License。


下载二进制部署包


wget https://github.com/czerwonk/ping_exporter/releases/download/0.4.7/ping_exporter_0.4.7_linux_amd64.tar.gz
复制代码


解压后执行 Ping Exporter 的二进制文件我们可以得到帮助信息


usage: ping_exporter [<flags>] [<targets>...]
Flags: --help Show context-sensitive help (also try --help-long and --help-man). --version Print version information --web.listen-address=":9427" Address on which to expose metrics and web interface --web.telemetry-path="/metrics" Path under which to expose metrics --config.path="" Path to config file --ping.interval=5s Interval for ICMP echo requests --ping.timeout=4s Timeout for ICMP echo request --ping.size=56 Payload size for ICMP echo requests --ping.history-size=10 Number of results to remember per target --dns.refresh=1m Interval for refreshing DNS records and updating targets accordingly (0 if disabled) --dns.nameserver="" DNS server used to resolve hostname of targets --log.level="info" Only log messages with the given severity or above. Valid levels: [debug, info, warn, error, fatal] --metrics.deprecated="enable" Enable or disable deprecated metrics (`ping_rtt_ms{type=best|worst|mean|std_dev}`). Valid choices: [enable, disable] --metrics.rttunit="ms" Export ping results as either millis (default), or seconds (best practice), or both (for migrations). Valid choices: [ms, s, both]
Args: [<targets>] A list of targets to ping
复制代码


从帮助信息来看,我们需要一个配置文件来指定要 Ping 的列表。另外常规的监听端口、 Metric 数据导出路径、日志输出级别都可以自定义。与 Ping 相关的时间间隔、超时时间、Ping 包大小、DNS 刷新时间等也可以自行设置,这些参数既可以在启动的时候 通过参数来设置,也可以在配置文件中进行设置。


我们来先准备一个配置文件:ping.yml 。其中 targets 下是我们要 Ping 的 IP 地址,V4 或者 V6 协议,也可以是域名。


targets:  - 8.8.8.8  - 8.8.4.4  - 2001:4860:4860::8888  - 2001:4860:4860::8844  - baidu.com
dns: refresh: 2m15s nameserver: 1.1.1.1
ping: interval: 2s timeout: 3s history-size: 42 payload-size: 120
复制代码


官方提供了一个 ping-exporter.service 文件来控制 Ping Exporter 的启停。


[Unit]Description=Ping ExporterAfter=network.target
[Service]User=ping_exporterExecStart=/usr/local/bin/ping_exporter --config.path=/etc/ping_exporter/config.yml --web.listen-address=":9427"NoNewPrivileges=yesCapabilityBoundingSet=CAP_NET_RAWAmbientCapabilities=CAP_NET_RAWPrivateDevices=truePrivateTmp=yesProtectControlGroups=trueProtectKernelModules=yesProtectKernelTunables=trueProtectSystem=strictProtectClock=trueProtectHostname=trueProtectHome=trueDevicePolicy=closedRestrictNamespaces=yesRestrictRealtime=yesRestrictSUIDSGID=yesMemoryDenyWriteExecute=yesLockPersonality=yes
[Install]WantedBy=default.target
复制代码


如果我们使用 Docker 镜像来启动 Ping Exporter 的话,启动命令如下:


docker run -p 9427:9427 -v /path/to/config/directory:/config:ro --name ping_exporter czerwonk/ping_exporter
复制代码


运行后输出的结果如下:


# HELP ping_loss_percent Packet loss in percent# TYPE ping_loss_percent gaugeping_loss_percent{ip="2001:4860:4860::8844",ip_version="6",target="2001:4860:4860::8844"} 1ping_loss_percent{ip="2001:4860:4860::8888",ip_version="6",target="2001:4860:4860::8888"} 1ping_loss_percent{ip="220.181.38.148",ip_version="4",target="baidu.com"} 0ping_loss_percent{ip="39.156.69.79",ip_version="4",target="baidu.com"} 0ping_loss_percent{ip="8.8.4.4",ip_version="4",target="8.8.4.4"} 0ping_loss_percent{ip="8.8.8.8",ip_version="4",target="8.8.8.8"} 0.1# HELP ping_rtt_best_seconds_ms Best round trip time in millis (deprecated)# TYPE ping_rtt_best_seconds_ms gaugeping_rtt_best_seconds_ms{ip="220.181.38.148",ip_version="4",target="baidu.com"} 1.9935760498046875ping_rtt_best_seconds_ms{ip="39.156.69.79",ip_version="4",target="baidu.com"} 4.307188034057617ping_rtt_best_seconds_ms{ip="8.8.4.4",ip_version="4",target="8.8.4.4"} 40.30187225341797ping_rtt_best_seconds_ms{ip="8.8.8.8",ip_version="4",target="8.8.8.8"} 44.01082229614258# HELP ping_rtt_mean_seconds_ms Mean round trip time in millis (deprecated)# TYPE ping_rtt_mean_seconds_ms gaugeping_rtt_mean_seconds_ms{ip="220.181.38.148",ip_version="4",target="baidu.com"} 2.045837640762329ping_rtt_mean_seconds_ms{ip="39.156.69.79",ip_version="4",target="baidu.com"} 4.4511942863464355ping_rtt_mean_seconds_ms{ip="8.8.4.4",ip_version="4",target="8.8.4.4"} 40.4238166809082ping_rtt_mean_seconds_ms{ip="8.8.8.8",ip_version="4",target="8.8.8.8"} 44.22184753417969# HELP ping_rtt_seconds_ms Round trip time in millis (deprecated)# TYPE ping_rtt_seconds_ms gaugeping_rtt_seconds_ms{ip="220.181.38.148",ip_version="4",target="baidu.com",type="best"} 1.9935760498046875ping_rtt_seconds_ms{ip="220.181.38.148",ip_version="4",target="baidu.com",type="mean"} 2.045837640762329ping_rtt_seconds_ms{ip="220.181.38.148",ip_version="4",target="baidu.com",type="std_dev"} 0.04358862712979317ping_rtt_seconds_ms{ip="220.181.38.148",ip_version="4",target="baidu.com",type="worst"} 2.149885892868042ping_rtt_seconds_ms{ip="39.156.69.79",ip_version="4",target="baidu.com",type="best"} 4.307188034057617ping_rtt_seconds_ms{ip="39.156.69.79",ip_version="4",target="baidu.com",type="mean"} 4.4511942863464355ping_rtt_seconds_ms{ip="39.156.69.79",ip_version="4",target="baidu.com",type="std_dev"} 0.24366436898708344ping_rtt_seconds_ms{ip="39.156.69.79",ip_version="4",target="baidu.com",type="worst"} 5.212696075439453ping_rtt_seconds_ms{ip="8.8.4.4",ip_version="4",target="8.8.4.4",type="best"} 40.30187225341797ping_rtt_seconds_ms{ip="8.8.4.4",ip_version="4",target="8.8.4.4",type="mean"} 40.4238166809082ping_rtt_seconds_ms{ip="8.8.4.4",ip_version="4",target="8.8.4.4",type="std_dev"} 0.12417548894882202ping_rtt_seconds_ms{ip="8.8.4.4",ip_version="4",target="8.8.4.4",type="worst"} 40.71577835083008ping_rtt_seconds_ms{ip="8.8.8.8",ip_version="4",target="8.8.8.8",type="best"} 44.01082229614258ping_rtt_seconds_ms{ip="8.8.8.8",ip_version="4",target="8.8.8.8",type="mean"} 44.22184753417969ping_rtt_seconds_ms{ip="8.8.8.8",ip_version="4",target="8.8.8.8",type="std_dev"} 0.14494535326957703ping_rtt_seconds_ms{ip="8.8.8.8",ip_version="4",target="8.8.8.8",type="worst"} 44.4484977722168# HELP ping_rtt_std_deviation_seconds_ms Standard deviation in millis (deprecated)# TYPE ping_rtt_std_deviation_seconds_ms gaugeping_rtt_std_deviation_seconds_ms{ip="220.181.38.148",ip_version="4",target="baidu.com"} 0.04358862712979317ping_rtt_std_deviation_seconds_ms{ip="39.156.69.79",ip_version="4",target="baidu.com"} 0.24366436898708344ping_rtt_std_deviation_seconds_ms{ip="8.8.4.4",ip_version="4",target="8.8.4.4"} 0.12417548894882202ping_rtt_std_deviation_seconds_ms{ip="8.8.8.8",ip_version="4",target="8.8.8.8"} 0.14494535326957703# HELP ping_rtt_worst_seconds_ms Worst round trip time in millis (deprecated)# TYPE ping_rtt_worst_seconds_ms gaugeping_rtt_worst_seconds_ms{ip="220.181.38.148",ip_version="4",target="baidu.com"} 2.149885892868042ping_rtt_worst_seconds_ms{ip="39.156.69.79",ip_version="4",target="baidu.com"} 5.212696075439453ping_rtt_worst_seconds_ms{ip="8.8.4.4",ip_version="4",target="8.8.4.4"} 40.71577835083008ping_rtt_worst_seconds_ms{ip="8.8.8.8",ip_version="4",target="8.8.8.8"} 44.4484977722168# HELP ping_up ping_exporter version# TYPE ping_up gaugeping_up{version="0.4.7"} 1
复制代码


来对结果进行一下解读ping_up 这个指标提供了 2 个信息,一个是当前 Ping Exporter 的版本信息,一个是当前的状态,值为 1 的时候是启动状态,值为 0 的时候是停止状态。


ping_loss_percent 这个提供了丢包率,


ping_rtt_best_seconds_ms 最好的响应时间(millis)ping_rtt_mean_seconds_ms 平均响应时间(毫秒)(已弃用)ping_rtt_seconds_ms 响应时间(毫秒)(已弃用)ping_rtt_std_deviation_seconds_ms 以毫秒为单位的标准偏差(已弃用)ping_rtt_worst_seconds_ms 最差的响应时间(已弃用)


ping_rtt_seconds_ms 这个 Metric 里 已经用 label 对最好响应时间、最差响应时间、标准差进行了区分。


作者对好多指标标注了 deprecated 已弃用,但是也都还在,个人感觉 ping_rtt_seconds_ms 和其他的几个指标有重复的情况,在使用的时候可以酌情选取。

发布于: 2 小时前阅读数: 3
用户头像

耳东

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
Ping Exporter -- Prometheus