Prometheus 使用 PushGateway 进行数据上报

2022-02-18  本文已影响0人  春秋不做梦

简介

Pushgateway是prometheus的一个重要组件,利用该组件可以实现自动以监控指标,从字面意思来看,该部件不是将数据push到prometheus,而是作为一个中间组件收集外部push来的数据指标,prometheus会定时从pushgateway上pull数据。
【注意】如果client一直没有推送新的指标到pushgateway,那么Prometheus获取到的数据是client最后一次push的数据,直到指标消失(默认5分钟)。
Prometheus本身是不会存储指标的,但是为了防止pushgateway意外重启、工作异常等情况的发送,在pushgateway处允许指标暂存,参数--persistence.interval=5m,默认保存5分钟,5分钟后,本地存储的指标会删除。

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

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

启动

1、docker 启动pushgateway

docker pull prom/pushgateway
docker run -d --name pushgateway -p 9091:9091 --restart=always prom/pushgateway

2、访问9091端口(http://pushgatewayIP:9091

pushgateway.png

3、在prometheus中添加pushgateway节点

打开prometheus的配置文件

- job_name: 'pushgateway'
  static_configs:
  - targets: ['pushgatewayIP:9091']
    labels:
          instance: pushgateway
  honor_labels: true        

作用:如果没有设置instance标签,Prometheus服务器也会附加标签,否则instance标签值会为空   
重启prometheus后,登陆web UI,查看prometheus的targets


image.png

4、API 方式 Push 数据到 PushGateway
接下来,我们要 Push 数据到 PushGateway 中,可以通过其提供的 API 标准接口来添加,默认 URL 地址为:http://<ip>:9091/metrics/job/<JOBNAME>{/<LABEL_NAME>/<LABEL_VALUE>},其中 <JOBNAME> 是必填项,为 job 标签值,后边可以跟任意数量的标签对,一般我们会添加一个 instance/<INSTANCE_NAME> 实例名称标签,来方便区分各个指标。

#!/bin/bash

allname=`docker ps --format "{{.Names}}"`
function dockerrunning(){
    containerName=$1
    exist=`docker inspect --format '{{.State.Status}}' ${containerName}`

    if [ "${exist}" != "running" ]; then
        echo 0
    else
        echo 1
    fi
    }

echo "# TYPE dockerrunning  counter" > a
for i in ${allname}
do

  t=`dockerrunning $i`
  echo "dockerrunning{name=\"$i\"} $t" >> a
done


curl --data-binary "@a" http://192.168.11.120:9091/metrics/job/docker/instance/dockerrunning
rm a
image.png image.png image.png
image.png
上一篇下一篇

猜你喜欢

热点阅读