
Prometheus教程(7)使用PushGateway自定义监控
一、PushGateway 介绍
在 Prometheus 的体系结构中,需要依赖 PushGateway 来对一些生命周期较短的任务或者无法被 Prometheus 直接拉取到指标的对象进行监控。生命周期较短是指被监控对象可能还没等到 Prometheus 来获取数据,其自身就已经不存在了,比如一些脚本执行完就结束了,但是我们需要对脚本执行的情况进行监控。而无法被Prometheus拉取到指标的对象包括一些嵌入式设备、防火墙等,它们并没有暴露 HTTP 端点让 Prometheus 拉取数据。为了解决上面两种场景种的问题,就需要把这些数据主动推送给Pushgateway,然后 Prometheus 再从中获取到监控数据
二、PushGateway 安装与配置
1、下载PushGateway
访问官网 https://prometheus.io/download/ 可下载二进制包
wget https://github.com/prometheus/pushgateway/releases/download/v1.11.0/pushgateway-1.11.0.linux-amd64.tar.gz
2、启动PushGateway
nohup ./pushgateway --web.listen-address="0.0.0.0:9091" --persistence.file="/data/pushgateway/pushgateway.data" &
3、配置Prometheus
在 Prometheus 中添加PushGateway的信息,这样可以让 Prometheus 把 Pushgateway 当作一个采集目标来进行数据抓取
#增加如下配置 - job_name: 'pushgateway' static_configs: - targets: ['192.168.159.101:9091'] #PushGateway的地址
4、重新加载Prometheus
curl -X POST http://192.168.159.101:9090/-/reload
5、推送数据到PushGateway
推送一条名为test_metric的指标、值为1的数据给 Pushgateway 中进行测试,正常推送后在Prometheus Web端通过指标名test_metric可以看到这条数据,并且有标签job=test_job
echo "test 1" | curl --data-binary @- http://localhost:9091/metrics/job/test_job
三、PushGateway服务注册
· --persistence.file:指定 PushGateway 持久化数据的存储路径,当服务重启时可以从该文件恢复数据
· --persistence.interval:定义 PushGateway 进行持久化操作的间隔
vi /etc/systemd/system/pushgateway.service [Unit] Description=Prometheus Pushgateway After=network.target [Service] ExecStart=/usr/local/bin/pushgateway --web.listen-address=:9091 --persistence.file=/var/lib/pushgateway/pushgateway.db --persistence.interval=5m ExecStop=/bin/kill -s SIGTERM $MAINPID Restart=always RestartSec=10s LimitNOFILE=65536 [Install] WantedBy=multi-user.target #启动服务 systemctl daemon-reload systemctl enable pushgateway systemctl start pushgateway
四、监控自定义脚本
假设需要监控脚本的执行时间和退出状态
#!/bin/bash PGW_URL="http://localhost:9091" # 脚本开始时间 start_time=$(date +%s) sleep 5 # 脚本结束时间 end_time=$(date +%s) # 计算脚本耗时 duration=$((end_time - start_time)) # 获取退出状态码 status=$? # 推送到 Pushgateway,这里生成了2个指标,task_duration_seconds和task_exit_code cat <<EOF | curl --data-binary @- ${PGW_URL}/metrics/job/my_shell_job/instance/$(hostname) task_duration_seconds ${duration} task_exit_code ${status} EOF
执行脚本后,在浏览器访问Prometheus可以看到脚本中定义的指标和数据
# TYPE task_duration_seconds untyped task_duration_seconds{instance="myserver"} 5 # TYPE task_exit_code untyped task_exit_code{instance="myserver"} 0
PushGateway 默认不会对这些指标进行清理,所以任务结束后需要自行DELETE
curl -X DELETE ${PGW_URL}/metrics/job/my_shell_job/instance/$(hostname
猜你喜欢
运维技术 Prometheus教程(6)AlertManager告警部署与配置




一、 Alertmanager 介绍AlertManager 是 Prometheus 生态中实现告警管理的关键组件。Prometheus会定期检查指标数据是否与设定好的告警规则匹...

运维技术 Prometheus教程(5)常用exporter的安装与使用配置
一、exporter介绍Prometheus exporter的作用是通过HTTP协议开放符合规范的指标数据给Prometheus抓取。在Prometheus官网提供了大量现成的exporter,基本...

运维技术 Prometheus教程(4)指标类型与常用函数
一、Prometheus 指标类型介绍Prometheus 提供了四种指标类型,这些类型定义了指标值的语义和处理方式,不同的指标类型也有不同的聚合函数搭配使用1、Gauges仪表盘型,该指标类型的值会...

运维技术 Prometheus教程(3)PromQL用法详解
一、PromQL 基本介绍PromQL 全称 Prometheus Query Language,它是 Prometheus 专用查询语言。通过PromQL可以灵活的对每个指标实现条件查询、...
运维技术 Prometheus教程(2)安装部署Grafana并对接Prometheus

一、Grafana介绍Grafana是一款开源的可视化平台,它能够将来自不同数据源的数据(可以集成 Prometheus、Elasticsearch、MySQL 等多种数据源)转换成丰富的图形、图表(...
文章评论