文章目录
Pushgateway 自定义脚本推送数据
1. 目的
本文档提供了使用自定义脚本向 Prometheus Pushgateway 推送监控数据的标准操作流程(SOP),包括完整的示例代码。
2. 适用范围
适用于需要将自定义监控数据通过 Pushgateway 推送到 Prometheus 的场景。
3. 前提条件
- 已部署并运行 Pushgateway 服务
- 已安装 curl 或编程语言相关 HTTP 客户端库
- 了解基本的 Prometheus 指标类型和格式
4. 操作流程
4.1 确定指标类型和格式
选择适合的指标类型:
- Counter: 累计计数,只增不减
- Gauge: 可增可减的数值
- Histogram: 直方图
- Summary: 摘要
4.2 编写推送脚本
选择以下任意一种方法:
方法一:使用 curl 命令行推送
#!/bin/bash
# 变量定义
PUSHGATEWAY_URL="http://pushgateway.example.com:9091"
JOB_NAME="custom_script"
INSTANCE_NAME="server01"
# 指标数据
cat <<EOF | curl --data-binary @- ${PUSHGATEWAY_URL}/metrics/job/${JOB_NAME}/instance/${INSTANCE_NAME}
# TYPE custom_metric_counter counter
custom_metric_counter{label="value1"} 42
# TYPE custom_metric_gauge gauge
custom_metric_gauge{label="value2"} 3.14
EOF
方法二:使用 Python 脚本推送
#!/usr/bin/env python3
import requests
from datetime import datetime
# 配置信息
PUSHGATEWAY_URL = "http://pushgateway.example.com:9091"
JOB_NAME = "custom_script_python"
INSTANCE_NAME = "server01"
# 构造指标数据
metrics_data = """# TYPE python_custom_counter counter
python_custom_counter{label="python_value1"} 100
# TYPE python_custom_gauge gauge
python_custom_gauge{label="python_value2"} 2.718
# TYPE last_success_timestamp gauge
last_success_timestamp{} {timestamp}
""".format(timestamp=int(datetime.now().timestamp()))
# 推送数据
response = requests.post(
f"{
PUSHGATEWAY_URL}/metrics/job/{
JOB_NAME}/instance/{
INSTANCE_NAME}",
data=metrics_data
)
print