Prometheus之Pushgateway使用

Pushgateway属于整个架构图的这一部分

The Pushgateway is an intermediary service which allows you to push metrics from jobs which cannot be scraped. The Prometheus Pushgateway exists to allow ephemeral and batch jobs to expose their metrics to Prometheus. Since these kinds of jobs may not exist long enough to be scraped, they can instead push their metrics to a Pushgateway. The Pushgateway then exposes these metrics to Prometheus.

官方解释,Pushgateway是一个“中间人”服务,你可以把短期job的metrics push到Pushgateway,然后Prometheus从Pushgateway那里pull。

想象一下,如果没有Pushgateway,你为了监控short-lived jobs,就得把它们放到Prometheus的targets中,这样target越来越多,而且因为它是短期作业,这个target将长时间处于down的状态,这样确实不太优雅。

短期作业最好是 service-level(不包含特定的机器或实例标签)而不是 machine-level,以便将特定机器或实例的生命周期与推送的指标脱钩。

Pushgateway的另一个应用场景是,在网络不通的环境下充当一个中间人。比如因为网络原因,Prometheus不能直接从被监控对象pull数据,但是可以从Pushgateway那里pull,并且Pushgateway和被监控对象之间网络也是通的。这个场景虽然理论上可行,但是,官方更推荐使用PushProx( which allows Prometheus to traverse a firewall or NAT)

安装使用

到github https://github.com/prometheus/pushgateway 的release下载二进制包,解压后直接运行,默认端口是 9091

修改Prometheus配置文件,将Pushgateway添加为target,然后启动Prometheus

scrape_configs:
  - job_name: "pushgateway"
    static_configs:
      - targets: ["ip:9091"]

可通过向Pushgateway发put 或 post 请求进行数据推送。例:

echo "some_metric 3.14" | curl --data-binary @- http://pushgateway_ip:9091/metrics/job/some_job

去Prometheus就能查到刚刚推送的数据:

需要说明的是,因为Pushgateway是作为一个target写在Prometheus配置文件中的,所以Prometheus自动加了job="pushgateway"**instance**="192.168.243.99:9091"的标签,而自己加的job=some_job标签,因为和默认标签重名,被重命名成了exported_job。要想自定义的标签覆盖默认标签的修改Prometheus配置文件,增加honor_labels: true :

scrape_configs:
  - job_name: "pushgateway"
    honor_labels: true
    static_configs:
      - targets: ["ip:9091"]

将数据清空,再次向Pushgateway推送数据,查看发现自定义标签已经覆盖了默认标签:

使用Pushgateway需要注意的是:向Pushgateway推送的数据,Pushgateway会一直保存着,下次Prometheus来pull数据时,Pushgateway又会把之前保存的数据交给Prometheus(见上图,查5分钟内的数据,尽管我只向Pushgateway推了一次数据),除非手动调用删除接口:curl -X DELETE http://127.0.0.1:9091/metrics/job/some_job

原文:The Pushgateway never forgets series pushed to it and will expose them to Prometheus forever unless those series are manually deleted via the Pushgateway’s API

Prometheus还支持多种语言的客户端(如java/go/python 等)向Pushgateway推送数据,可参考官方文档各语言的示例

更多详细文档,参考github Pushgateway

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值