美文网首页
Prometheus 使用 PushGateway 进行数据上报

Prometheus 使用 PushGateway 进行数据上报

作者: 春秋不做梦 | 来源:发表于2022-02-18 18:24 被阅读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

    相关文章

      网友评论

          本文标题:Prometheus 使用 PushGateway 进行数据上报

          本文链接:https://www.haomeiwen.com/subject/rdmylrtx.html