1、Pushgateway简介
Pushgateway为Prometheus整体监控方案的功能组件之一,并做为一个独立的工具存在。它主要用于Prometheus无法直接拿到监控指标的场景,如监控源位于防火墙之后,Prometheus无法穿透防火墙;目标服务没有可抓取监控数据的端点等多种情况。在类似场景中,可通过部署Pushgateway的方式解决问题。
当部署该组件后,监控源通过主动发送监控数据到Pushgateway,再由Prometheus定时获取信息,实现资源的状态监控。
工作流程:
- 监控源通过Post方式,发送数据到Pushgateway,路径为/metrics。
- Prometheus服务端设置任务,定时获取Pushgateway上面的监控指标。
- Prometheus获取监控指标后,会根据告警规则进行计算,如果匹配将触发告警到Alertmanager;同时,Grafana可配置数据源调用Prometheus数据,做为数据展示。
2、pushgateway的使用方法
1、常见参数
usage: pushgateway [<flags>]
Flags:
--web.listen-address=":9091" 监听Web界面,API和遥测的地址。
--web.telemetry-path="/metrics" 公开metrics的路径。
--web.external-url= 可从外部访问Pushgateway的URL.
--web.route-prefix="" Web端点内部路由的前缀。默认为--web.external-url
--persistence.file="" 归档以保留metrics。如果为空,则metrics仅保留在内存中.
--persistence.interval=5m 写入持久性文件的最小间隔。
--log.level="info" 仅记录具有给定严重性或更高严重性的消息。
#有效级别:[debug, info, warn, error, fatal]
--log.format="logger:stderr" 设置日志目标和格式。
#示例:"logger:syslog?appname = bob&local = 7"或" logger: stdout?json = true"
--version 显示应用程序版本。
2、常用api
热加载
curl -X POST http://127.0.0.1:9090/-/reload
通过API接口默认push到pushgateway的格式
http://<ip>:9091/metrics/job/<JOBNAME>{/<LABEL_NAME>/<LABEL_VALUE>}
#示例
echo "pro_metric 80" | curl --data-binary @- http://192.168.100.221:9091/metrics/job/test_job
删除指标
#删除组下的所有指标
curl -X DELETE http://192.168.100.221:9091/metrics/job/test_job
#删除某一个单独的指标
curl -X DELETE http://192.168.100.221:9091/metrics/job/test_job/instance/test_instance
3、使用案例
1、编写脚本
#!/bin/bash
#set -x
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
job="fping"
instance="114.114.114.114"
icmppingloss=`fping -q -c3 "$instance" 2>&1 |awk -F '[/ %]+' '{print $9}'`
icmppingsec=`fping -q -c3 "$instance" 2>&1 |awk -F '[/ %]+' '{print $16}'`
icmpping=`fping -q -c3 "$instance" 2>&1 |awk -F '=' '{print $2}' |awk -F '/' '{print $2}'`
cat <<EOF | curl --data-binary @- http://192.168.100.221:9091/metrics/job/$job/instance/$instance
# TYPE node_fping_usages gauge
node_fpingloss_usages $icmppingloss
node_fpingsec_usages $icmppingsec
node_fping_usages $icmpping
EOF
2、计划任务,定时执行脚本
crontab -e
*/1 * * * * /usr/bin/bash /mnt/pushfping.sh
4、注意事项
- 会丧失通过UP监控指标,检查示例健康状态的功能,prometheus只会监控pushgateway的存活状态。
- 指标值只能是数字类型,非数字类型报错。
- 数据指标推送时间≤ Prometheus 拉取的时间,以保证Prometheus保证每次拉取的数据是最新 Push 上来的。
- 默认 PushGateway 不做数据持久化操作,当 PushGateway 重启或者异常挂掉,导致数据的丢失,可以通过启动时添加 -persistence.file 和 -persistence.interval 参数来持久化数据。-persistence.file 表示本地持久化的文件,将 Push 的指标数据持久化保存到指定文件,-persistence.interval 表示本地持久化的指标数据保留时间,若设置为 5m,则表示 5 分钟后将删除存储的指标数据。
- 指标值支持最大长度为 16 位,超过16 位后默认置为 0
- Pushgateway每次只向Prometheus返回最后一次推送的数据,如果客户端一直没有推送新的指标到pushgateway,那么Prometheus将始终拉取最后push上来的数据。
318

被折叠的 条评论
为什么被折叠?



