Prometheus添加gateway

简介

Pushgateway是prometheus的一个重要组件,利用该组件可以实现自动以监控指标,从字面意思来看,该部件不是将数据push到prometheus,而是作为一个中间组件收集外部push来的数据指标,prometheus会定时从pushgateway上pull数据。

pushgateway并不是将Prometheus的pull改成了push,它只是允许用户向他推送指标信息,并记录。而Prometheus每次从 pushgateway拉取的数据并不是期间用户推送上来的所有数据,而是client端最后一次push上来的数据。因此需设置client端向pushgateway端push数据的时间小于等于prometheus去pull数据的时间,这样一来可以保证prometheus的数据是最新的。

使用pushgateway的理由:
  1、prometheus默认采用pull模式,由于不在一个网络或者防火墙的问题,导致prometheus 无法拉取各个节点的数据。
  2、监控业务数据时,需要将不同数据汇总,然后由prometheus统一收集

pushgateway的缺陷:
  1、多个节点的数据汇总到pushgateway,当它宕机后影响很大
  2、pushgateway可以持续化推送所有的监控数据,即使监控已经下线,还会获取旧的监控数据。需手动清理不需要的数据
  3、重启后数据丢失

部署

安装pushgateway

1
docker run -d  --name=pushgateway  -p 9091:9091 -v /opt/pushgateway:/pushgateway --restart=always prom/pushgateway:latest

prometheus配置

1
2
3
4
5
6
7
- job_name: 'pushgateway'
scrape_interval: 10s
static_configs:
- targets:
- '192.168.7.107:9091'
labels:
instance: pushgateway

测试

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

删除

删除某个组下的某实例的所有数据:

1
curl -X DELETE http://192.168.7.107:9091/metrics/job/some_job/instance/some_instance

删除某个组下的所有数据:

1
curl -X DELETE http://192.168.7.107:9091/metrics/job/some_job
Donate