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
    

     

  • 相关阅读:
    hdu 2485 Destroying the bus stations 迭代加深搜索
    hdu 2487 Ugly Windows 模拟
    hdu 2492 Ping pong 线段树
    hdu 1059 Dividing 多重背包
    hdu 3315 My Brute 费用流,费用最小且代价最小
    第四天 下载网络图片显示
    第三天 单元测试和数据库操作
    第二天 布局文件
    第一天 安卓简介
    Android 获取存储空间
  • 原文地址:https://www.cnblogs.com/zqj-blog/p/11024834.html
Copyright © 2011-2022 走看看