pushgateway 使用

Pushgateway 的 job 和 instance 含义

1. job

  • 作用:代表一类任务、服务或应用的名称。
  • 类似于:Prometheus 抓取配置中的 job_name,用来区分不同的采集来源。
  • 举例
    • job=lock_alarm:表示这是“门锁告警”这类任务的指标。
    • job=payment_service:表示这是支付服务相关的指标。
  • 特点
    • 是必须的标识,Pushgateway 用它来归类指标数据。
    • 一个 job 下可以包含多个 instance。

2. instance

  • 作用:标识某个 job 下的具体实例或者来源。
  • 类似于:代表具体的服务节点、主机或设备。
  • 举例
    • instance=lock-123:可能表示编号为 lock-123 的具体门锁设备。
    • instance=server-01:表示服务的某个具体运行节点。
  • 特点
    • 不是强制必须的,但强烈建议加上,方便区分同一 job 下不同来源的指标。
    • 通过 instance 可以实现更细粒度的指标区分和管理。

推送消息

curl -X POST http://192.168.0.10:9091/metrics/job/lock_alarm/instance/lock-123 -H "Content-Type: text/plain" --data-binary $'lock_open_alarm{lock_id="lock-123",org="factory-a"} 1\n'

删除消息

curl -X DELETE http://192.168.0.10:9091/metrics/job/lock_alarm/instance/lock-123

实践

需求: 统计每个门开门记录,如果3天没有开门记录就产生告警

推送cmd

将每个门的最近开门记录推送上去

curl -X POST http://192.168.0.10:9091/metrics/job/lock_alarm/instance/lock-123 ^
-H "Content-Type: text/plain" ^
--data-binary $'lock_last_open_timestamp{lock_id="lock-123",org="factory-a"} 1691913600\n'

普罗米修斯告警配置

groups:
- name: lock_alarm_rules
  rules:
  - alert: LockNotOpened3Days
    expr: time() - lock_last_open_timestamp > 259200
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "门 {{ $labels.lock_id }} 超过3天未开门"
      description: "门 {{ $labels.lock_id }} 在 {{ $labels.org }} 超过3天未开门"
posted @ 2025-09-01 15:48  beamsoflight  阅读(12)  评论(0)    收藏  举报