zoukankan      html  css  js  c++  java
  • prometheus自定义监控指标——入门

    grafana结合prometheus提供了大量的模板,虽然这些模板几乎监控到了常见的监控指标,但是有些特殊的指标还是没能提供(也可能是我没找到指标名称)。受zabbix的影响,自然而然想到了自定义监控项,promethues同样也支持。


    一、简介

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

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

    【注意】如果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
      首先需要登录dockerhub
      docker login 输入用户名密码即可

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

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

     

      证明pushgateway部署成功

      3、在prometheus中添加pushgateway节点

      打开prometheus的配置文件

    - job_name: 'pushgateway'
      static_configs:
      - targets: ['pushgatewayIP:9091']
      honor_labels: true        #作用:如果没有设置instance标签,Prometheus服务器也会附加标签,否则instance标签值会为空   

      重启prometheus后,登陆web UI,查看prometheus的targets

      4、测试

    向pushgateway发送数据
    	echo "test 123" | curl --data-binary @- http://pushgatewayIP:9091/metrics/job/test
    

      上述测试的目的是,在被监控的机器上,想pushgateway发送了一条数据,内容是“test 123”,指标名称是“test”,指标值是“123”;

      http://pushgatewayIP:9091/metrics/job/test,此次也声名了,在pushgateway处建立一个job为test的指标。

    推送的API路径
    	所有的推送都是通过HTTP完成的,API路径如下:
    	/metrics/job/<JOBNAME>{/<LABEL_NAME>/<LABEL_VALUE>}
    	JOBNAME:job标签的值
            / 是转义符

      登陆prometheus webUI查询指标是否生成

    三、pushgateway发送数据的API格式

    API格式:

      http://pustgatewayIP/metrices/job/job名/标签名/标签值(一般 标签名 采用 instance)

    例子:
      http://pustgatewayIP/metrics/job/  
        /sb/instance/si
        /testjob/abc/pushgateway1
        /testjob/yyy/pushgateway1
      
    分别触发上述三个API,打开pushgateway的web UI

    四、发送的数据类型

       1、发送counter类型

    可以一次发送单个,也可以发送多个数据

    cat <<EOF | curl --data-binary @- http://pushgatewayIP:9091/metrics/job/docker_runtime/instance/xa-lsr-billubuntu
        # TYPE docker_runtime counter
    	docker_runtime{name="cadvisor"} 33
    	docker_runtime{name="nginx"} 331
    	docker_runtime{name="abc"} 332
    EOF
    

      2、发送gauage类型

    可以一次发送单个,也可以发送多个数据

    cat <<EOF | curl --data-binary @- http://pushgatewayIP:9091/metrics/job/docker_runtime/instance/xa-lsr-billubuntu
        # TYPE docker_runtime gauge
        # HELP docker_runtime time sec
        docker_runtime{name="nginx"} 22
       docker_runtime{name="cadvisor"} 22
       docker_runtime{name="bbc"} 22
    EOF
    

      3、curl的另一种发送形式

    --data-binary <data> 与-d, --data类似,如果以@开头,则后面必须跟着文件名,并且文件中的换行符,回车符会保留,也不会做

    将要发送的数据写入文件“a”,作用是将文件中的数据发送到指定地方

    curl --data-binary "@a" http://pushgatewayIP:9091/metrics/job/docker_runtime/instance/xa-lsr-billubuntu
    

     

  • 相关阅读:
    如何设置IIS实现无扩展名重写
    正则表达式基础知识
    Literal控件用法
    ajaxPro.dll基础教程
    PetShop的系统架构设计
    SQL点滴29—错误无处不在
    javascript中的正则表达式
    为什么开发环境如此之乱
    SQL点滴文章总结
    javascript读写cookie
  • 原文地址:https://www.cnblogs.com/zqj-blog/p/11024834.html
Copyright © 2011-2022 走看看