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

prometheus自定义监控指标——入门的更多相关文章

  1. prometheus自定义监控指标——实战

    上一节介绍了pushgateway的作用.优劣以及部署使用,本机通过几个实例来重温一下自定义监控指标是如何使用的. 一.监控容器启动时间(shell) 使用prometheus已经两个月了,但从未找到 ...

  2. Prometheus自定义监控内容

    Prometheus自定义监控内容 一.io.micrometer的使用 1.1 Counter 1.2 Gauge 1.3 Timer 1.4 Summary 二.扩展 相关内容原文地址: 博客园: ...

  3. Prometheus自定义监控告警项-3

    prometheus 编写告警规则 将自定义的告警规则写到独立的文件中,prometheus.yml中引用如下: rule_files: - "rules/*.yml" [root ...

  4. .NetCore下使用Prometheus实现系统监控和警报 (六)进阶Grafana集成自定义收集指标

    Prometheus中包含了很多收集指标,那么我们怎来在Grafana中来使用呢? 接下来我们还是以之前自定义的来演示如图:我们在Prometheus中已经可以看到这个之前我们自定义的类型了 关于Gr ...

  5. Prometheus Operator自定义监控项

    Prometheus Operator默认的监控指标并不能完全满足实际的监控需求,这时候就需要我们自己根据业务添加自定义监控.添加一个自定义监控的步骤如下: 1.创建一个ServiceMonitor对 ...

  6. K8S Canal基于Prometheus进行实时指标监控

    文章来源于本人的印象笔记,如出现格式问题可访问该链接查看原文 部署canal的prometheus监控到k8s中 1.grafana的docker部署方式:https://grafana.com/gr ...

  7. Spring cloud微服务安全实战-7-6自定义metrics监控指标(1)

    自己写代码来定义一个metrics,然后让prmetheus收走,在grafana里面定义一个panel并展示出来. prometheus的四种metrics指标.虽然所有的metrics都是数字,但 ...

  8. 实战 Prometheus 搭建监控系统

    实战 Prometheus 搭建监控系统 Prometheus 是一款基于时序数据库的开源监控告警系统,说起 Prometheus 则不得不提 SoundCloud,这是一个在线音乐分享的平台,类似于 ...

  9. Prometheus 系统监控方案 一

    最近一直在折腾时序类型的数据库,经过一段时间项目应用,觉得十分不错.而Prometheus又是刚刚推出不久的开源方案,中文资料较少,所以打算写一系列应用的实践过程分享一下. Prometheus 是什 ...

随机推荐

  1. eclipse使用SVN来检索项目

    file——import——搜索框输入SVN——点击SVN检索项目 ——输入想要检索的地址

  2. c#ADO.NET 执行带参数及有返回数据

    直接上代码,这个过程中有个数据SqlDataReader转为 DataTable的过程,当中为什么这样,是应为我直接绑定DataSource的时候没有数据,网人家说直接绑定但是没效果,我就转换了一下. ...

  3. C#根据流下载文件

    C#从服务器下载文件可以使用下面4个方法:TransmitFile.WriteFile.WriteFile和流方式下载文件,并保存为相应类型,方法如下: .TransmitFile实现下载 prote ...

  4. 史上最全的音视频SDK包分享给大家

    史上最全的音视频SDK包分享给大家 概述一下SDK功能: 项目 详情视频通信  支持多种分辨率的视频通信语音通信  提供语音通信,可支持高清宽带语音动态创建房间  可以根据需要,随时创建房间H5 支持 ...

  5. netcore添加api帮助文档页-Swagger

    1. 添加NuGet包 1)最基本的包:Swashbuckle.AspNetCore.Swagger 2)扩展包:Swashbuckle.AspNetCore.SwaggerGen和Swashbuck ...

  6. windows 2012 IIS 部署 .net core HTTP Error 502.5 - Process Failure 错误解决办法

    安装系统补丁: 2012 R2对应>Windows8.1-KB2999226-x64.msu 下载地址: https://www.microsoft.com/zh-CN/download/det ...

  7. Vue项目运行或打包时,频繁内存溢出情况CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

    前端使用基于vue的Nuxt框架,但是随着项目功能增多,项目变大,频繁出现此种情况,原因是项目太大,导致内存溢出,排除代码问题外,可参照以下方式解决 解决方案 1.全局安装increase-memor ...

  8. 安装MySQL-8.0.13

    安装1.去官网下载对应的MySQL版本http://downloads.mysql.com/archives/community/ 2.将下载下来的MySQL解压到你想要安装的目录下安装MySQL8. ...

  9. 【转】LockSupport深入浅出

    原文:https://www.cnblogs.com/qingquanzi/p/8228422.html 本篇是<自己动手写把"锁">系列技术铺垫的最后一个知识点.本篇 ...

  10. WorkFlow一:WorkFlow基础配置

    1.使用事物代码SWU3进入WF配置页. 2.展开第一个运行环境维护文件夹,选中第一个配置RFC目标,点击生成.完成后可点击运行按钮测试是否成功. 同上,挨个激活. 3.激活第二个文件夹‘维护环境定义 ...