开发自己的分布式监控Prometheus Exporter时遇到的坑

这里说下我在开发自己的Prometheus Exporter时遇到的几个坑,所谓的坑,其实是在开发过程中需要注意到的几个关键点,如果忽略,那么可能会产生错误和非预期的结果。

如果对Prometheus不了解的,可以自行谷歌或百度一下,或者可以看下我之前的一篇文章。Prometheus是基于Pull的工作模式,需要定期的从Agent端收集数据,并入库,这里的Agent被称为Exporter。官网和社区里目前很多成熟的expoter可以选择,比如监控linux机器的node_exporter、监控mysql的mysqld_exporter等等。这里的大多数都是用Go语言写的,其实理解了Exporter和Prometheus的工作原理之后就知道,exporter其实就是将收集的数据转化为文本格式,并对外暴露接口,提供 http 请求,所以很容自己实现一个,不必拘泥于用那种语言,你可以用Java、PHP或者Python等任何你擅长的。我这里用Python Flask框架写了一个监控vSphere Datastore的Exporter,开发过程中需要注意一下几点:

  1. Exporter的整体文本数据格式:

    Exporter的返回的是文本内容,其中以行为单位,空行将被忽略, 文本内容最后一行为空行;

    文本内容以“# HELP”开头的行为注释,表示帮助信息,以“# TYPE”开头的行表示此Metric的类型;

    exporter有四种数据类型,分别为:counter/gauge/histogram/summary。

  2. Exporter每一行文本的格式
    1. 在每一行文本的最后不能有空格,否则会不识别
    2. 在每一Metric行代表一个Key、Value对,Value的值是float类型,如果有两个Value值,最后

      一个会被认为是时间戳进行保存,比如:

      http_requests_total{method="post",code="200"} 1027 1395066363000

    3. Metrics的Label的value值必须要用双引号“”引起来
  3. Exporter的Content-Type必须是text类型:
    1. 这里我flask返回页面的Content-Type设置为:text/plain

4. Prometheus有自己的python的client:

项目地址如下:

https://github.com/prometheus/client_python

如果不想重复造轮子,可以选择用官网提供的lient端。

5. Exporter接口的响应时间

默认Prometheus是每隔15秒抓取一次数据,每次的timeout超时时间是10s,这个也可以在配置文件里自定义。要注意Exporter的接口响应时间一定要比server配置里的小。

时间: 2024-11-04 02:48:02

开发自己的分布式监控Prometheus Exporter时遇到的坑的相关文章

Python之路,Day20 - 分布式监控系统开发

Python之路,Day20 - 分布式监控系统开发 本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设计思路及架构解藕原则 常用监控系统设计讨论 Zabbix Nagios 监控系统需求讨论 1.可监控常用系统服务.应用.网络设备等 2.一台主机上可监控多个不同服务.不同服务的监控间隔可不同 3.同一个服务在不同主机上的监控间隔.报警阈值可不同

GPE监控预警系统(Grafana+Prometheus+Exporter)

GPE监控预警系统(Grafana+Prometheus+Exporter) GPE监控预警系统结构图 一: Grafana 1:简介 大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具.目前已经支持绝大部分常用的时序数据库. Grafana支持许多不同的数据源.每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源. 官方支持以下数据源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,

nagios+ganglia分布式监控

nagios+ganglia监控批量主机 之前我们学习用nagios+cacti实现网络监控报警,如果是传统的运维工作,有这个工具就足够强大了.但是对于分布式系统的开发+运维人员(DevOps?),更关心的是掌握分布式系统的性能和可用性,根据数据做出性能调整.升级.扩容等的决策,从而保证基础设施服务能够满足不断增长的业务需求.与Cacti.Nagios.Zabbix等工具相比,Ganglia更关注整个集群的性能和可用性.可以用于集群的性能监控.分析和优化. Ganglia就是这样一种工具.Gan

自动化运帷之分布式监控-zabbix 安装

zabbix 关于zabbix介绍可能就不用再说了,到处都是文章,这里之前使用的时Nagios,这里开始尝试接触zabbix,因为几个重要原则选择作为未来可能替换掉线上的监控系统,所以这边理由如下网友的itnihao的文字中摘抄了如下: 1.分布式监控,天生具有的功能,适合于构建分布式监控系统,具有node,proxy2种分布式模式 2.自动化功能,自动发现,自动注册主机,自动添加模板,自动添加分组,自动化运维工具搭配,puppet+zabbix,或者saltstack+zabbix,那是如鱼得

现代Java服务端开发核心技术之分布式数据库中间件MyCAT入门

现代Java服务端开发核心技术之分布式数据库中间件MyCAT入门 现代Java服务端开发核心技术 MyCAT系统环境搭建 如下列表展示了搭建MyCAT运行时环境所需要的软件及其版本说明. 软件名称 软件版本 os centos7.5 JDK JDK1.8u191 MySQL MySQL5.7 Mycat Mycat1.6.5 Navicat Navicat12.08 在非集群的环境下,MyCAT仅仅依赖JDK就可以良好的运行在Windows,Linux,macOS等操作系统之上. CentOS7

8、zabbix监控方式及分布式监控(04)

zabbix支持的监控方式 zabbix所能够显示的且可指定为监控接口类型的监控方式: Agent passive active SNMP:Simple Network Management Protocol 基于SNMP协议实现的监控,不需要特意在被监控端安装zabbix-agent,SNMP一般用在无法在被监控端安装zabbix-agent的时候,比如打印机.路由器 MIB.SMI.SNMP(v1.v2.v3) IPMI:智能平台管理接口(Intelligent Platform Manag

完美的分布式监控系统——普罗米修斯

DevOps工程师或SRE工程师,可能都知道Prometheus普罗米修斯.Prometheus于2012年由SoundCloud创建,目前已经已发展为最热门的分布式监控系统.Prometheus完全开源的,被很多云厂商(架构)内置,在这些厂商(架构)中,可以简单部署Prometheus,用来监控整个云基础架构设施.比如DigitalOcean或Docker都是普罗米修斯作为基础监控. 希腊神话中,普罗米修斯是最具智慧的神明之一,是泰坦巨神后代,其名字意思为"先见之明",那么以该名字命

zabbix专题:第十一章 zabbix proxy分布式监控配置

zabbix专题:第十一章 zabbix proxy分布式监控配置             对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.co zabbix proxy分布式监控配置 zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix proxy可以非常简便的实现了集中式.分

日均百万PV架构第四弹(分布式监控)

应该能更早出的第四弹,被虚拟机错误搅乱,迟迟没有上线,不得已将所有 节点用puppet完成上线,稍后整理第五弹(非你不可自动化)也即将上线 : ) zabbix简介    zabbix是基于Php的开源监控软件    基于多重数据采集 SNMP , Agent , Ping , Port    多重告警通知 Mail , Jabber , SMS    可以完成多种操作平台甚至于设备(route,switch,io)的监控工作    易于定制重用(模板机制,函数),甚至于二次开发    告警及时