@Pushgateway配置与使用
文章目录
- Pushgateway配置与使用
- 一、Pushgateway简介与适用场景
- 1.1 基本概念
- 1.2 使用场景
- 1.3 主要弊端
- 二、Pushgateway安装部署(推荐全使用Docker Compose安装,更方便些)
- 2.1 二进制安装方式(可选)
- 2.2 Docker安装方式(可选)
- 2.3 系统服务配置(可选)
- 三、Prometheus配置
- 3.1 修改prometheus.yml
- 3.2 重新加载配置
- 四、数据推送方法
- 4.1 使用curl推送简单数据
- 4.2 推送带instance的复杂数据
- 4.3 使用Python SDK推送
- 4.4 使用Shell脚本监控并推送
- 4.5 定时任务配置
- 五、数据管理
- 5.1 删除特定实例数据
- 5.2 删除整个job数据
- 六、告警规则配置
- 6.1 创建告警规则文件
- 6.2 在prometheus.yml中引用规则文件
- 七、安全与持久化
- 7.1 数据持久化
- 7.2 安全配置(阿里云方案)
- 八、验证与监控
- 九、最佳实践
Pushgateway配置与使用
Pushgateway是Prometheus生态中的重要组件,用于解决Prometheus无法直接拉取目标数据的场景。以下是Pushgateway的完整配置与使用标准操作流程。
一、Pushgateway简介与适用场景
1.1 基本概念
Pushgateway是一个独立服务,位于应用程序和Prometheus服务器之间,接收应用程序推送的指标数据,然后由Prometheus服务器拉取这些数据。
1.2 使用场景
- 当目标与Prometheus不在同一子网或有防火墙限制时
- 需要汇总不同业务数据统一收集时
- 临时性任务(如批处理作业)需要监控时
- 现有exporter无法满足需求,需自定义监控数据时
1.3 主要弊端
- 单点故障影响范围大
- Prometheus只能监控Pushgateway状态,无法直接监控各目标节点
- 数据会持久化,需手动清理过期数据
二、Pushgateway安装部署(推荐全使用Docker Compose安装,更方便些)
2.1 二进制安装方式(可选)
# 下载最新版本
wget https://github.com/prometheus/pushgateway/releases/download/v1.0.0/pushgateway-1.0.0.linux-amd64.tar.gz# 解压并安装
tar xzvf pushgateway-1.0.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/pushgateway-1.0.0.linux-amd64 /usr/local/pushgateway# 启动(带持久化)
nohup /usr/local/pushgateway/pushgateway --persistence.file="pushgateway.data" &
2.2 Docker安装方式(可选)
docker pull prom/pushgateway
docker run -d -p 9091:9091 --name pushgateway prom/pushgateway
2.3 系统服务配置(可选)
# 创建服务文件
cat > /usr/lib/systemd/system/pushgateway.service <<EOF
[Unit]
Description=pushgateway
After=network.target[Service]
Type=simple
WorkingDirectory=/usr/local/pushgateway
ExecStart=/usr/local/pushgateway/pushgateway --persistence.file=/usr/local/pushgateway/data/pushgateway.data
Restart=on-failure[Install]
WantedBy=multi-user.target
EOF# 启动服务
systemctl enable pushgateway
systemctl start pushgateway
三、Prometheus配置
3.1 修改prometheus.yml
- job_name: 'pushgateway'honor_labels: true # 重要:保留原始job和instance标签static_configs:- targets: ['pushgateway_ip:9091']labels:instance: pushgateway
3.2 重新加载配置
curl -X POST http://localhost:9090/-/reload
四、数据推送方法
4.1 使用curl推送简单数据
# 基本格式
echo "metric_name metric_value" | curl --data-binary @- http://pushgateway_ip:9091/metrics/job/job_name# 示例
echo "some_metric 3.14" | curl --data-binary @- http://192.168.1.144:9091/metrics/job/some_job
4.2 推送带instance的复杂数据
cat <<EOF | curl --data-binary @- http://192.168.1.144:9091/metrics/job/some_job/instance/some_instance
# TYPE some_metric counter
some_metric{label="val1"} 42
# TYPE another_metric gauge
# HELP another_metric Just an example.
another_metric 2398.283
EOF
4.3 使用Python SDK推送
from prometheus_client import CollectorRegistry, Gauge, push_to_gatewayregistry = CollectorRegistry()
g = Gauge('job_last_success_unixtime', 'Last time a batch job successfully finished', registry=registry)
g.set_to_current_time()
push_to_gateway('http://192.168.1.144:9091', job='batchA', registry=registry)
4.4 使用Shell脚本监控并推送
#!/bin/sh
FILENUM=$(ls -l /data | sed 1d | wc -l)
echo "data_file_num ${FILENUM}" | curl --data-binary @- http://192.168.1.144:9091/metrics/job/test_job/instance/test
4.5 定时任务配置
# 添加定时任务
crontab -e
*/1 * * * * /bin/sh /opt/file_num.sh >/dev/null 2>&1
五、数据管理
5.1 删除特定实例数据
curl -X DELETE http://pushgateway_ip:9091/metrics/job/some_job/instance/some_instance
5.2 删除整个job数据
curl -X DELETE http://pushgateway_ip:9091/metrics/job/some_job
六、告警规则配置
6.1 创建告警规则文件
groups:
- name: pushgatewayrules:- alert: DataFileNumexpr: data_file_num > 9for: 0mlabels:severity: warningannotations:summary: "Data directory has too many files ({{ $value }})"
6.2 在prometheus.yml中引用规则文件
rule_files:- 'pushgateway.yml'
七、安全与持久化
7.1 数据持久化
启动时添加参数:
--persistence.file="pushgateway.data" # 数据文件路径
--persistence.interval=5m # 持久化间隔
7.2 安全配置(阿里云方案)
- 使用JWT鉴权协议保护数据安全
- 在请求头中添加Token:
curl -H "Authorization: Bearer your_token" ...
- 或使用Basic Auth:
curl --user "admin:your_token" ...
八、验证与监控
- 访问Pushgateway UI:
http://pushgateway_ip:9091
- 在Prometheus UI的Targets页面检查Pushgateway状态
- 在Prometheus Graph页面查询推送的指标
- 在Grafana中创建监控面板
九、最佳实践
- 为每个任务使用唯一的job名称
- 为每个实例添加instance标签
- 设置合理的持久化间隔
- 定期清理不再使用的指标数据
- 监控Pushgateway本身的状态和性能
- 考虑高可用部署方案
通过以上SOP,您可以完整地配置和使用Pushgateway来实现各种监控场景的需求。