prometheus自定义监控指标——入门

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


1、简介

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

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

【注意】若是client一直没有推送新的指标到pushgateway,那么Prometheus获取到的数据是client最后一次push的数据,直到指标消失(默认5分钟)。
Prometheus自己是不会存储指标的,可是为了防止pushgateway意外重启、工做异常等状况的发送,在pushgateway处容许指标暂存,参数--persistence.interval=5m,默认保存5分钟,5分钟后,本地存储的指标会删除。ubuntu

使用pushgateway的理由:
  一、prometheus默认采用pull模式,因为不在一个网络或者防火墙的问题,致使prometheus 没法拉取各个节点的数据。
  二、监控业务数据时,须要将不一样数据汇总,而后由prometheus统一收集bash

pushgateway的缺陷:
  一、多个节点的数据汇总到pushgateway,当它宕机后影响很大
  二、pushgateway能够持续化推送全部的监控数据,即便监控已经下线,还会获取旧的监控数据。需手动清理不须要的数据
  三、重启后数据丢失服务器

2、启动  

  一、docker 启动pushgateway
  首先须要登陆dockerhub
  docker login 输入用户名密码便可网络

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

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

 

  证实pushgateway部署成功测试

  三、在prometheus中添加pushgateway节点url

  打开prometheus的配置文件

- job_name: 'pushgateway'
  static_configs:
  - targets: ['pushgatewayIP:9091']
  honor_labels: true        #做用:若是没有设置instance标签,Prometheus服务器也会附加标签,不然instance标签值会为空   

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

  四、测试

向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查询指标是否生成

3、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

4、发送的数据类型

   一、发送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

  二、发送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

  三、curl的另外一种发送形式

--data-binary <data> 与-d, --data相似,若是以@开头,则后面必须跟着文件名,而且文件中的换行符,回车符会保留,也不会作

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

curl --data-binary "@a" http://pushgatewayIP:9091/metrics/job/docker_runtime/instance/xa-lsr-billubuntu
相关文章
相关标签/搜索