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

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
简介:

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

3c74000376a36ad3643e

  如果对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

wKioL1nOacaAjHXsAADhjtwMq_o354.png

    4. Prometheus有自己的python的client:

   项目地址如下:

https://github.com/prometheus/client_python

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

  5. Exporter接口的响应时间

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



      本文转自Jx战壕  51CTO博客,原文链接:http://blog.51cto.com/xujpxm/1969879,如需转载请自行联系原作者





相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
相关文章
|
3月前
|
Prometheus 监控 Cloud Native
【监控】prometheus传统环境监控告警常用配置
【监控】prometheus传统环境监控告警常用配置
【监控】prometheus传统环境监控告警常用配置
|
15天前
|
NoSQL Java Redis
开发实战:使用Redisson实现分布式延时消息,订单30分钟关闭的另外一种实现!
本文详细介绍了 Redisson 延迟队列(DelayedQueue)的实现原理,包括基本使用、内部数据结构、基本流程、发送和获取延时消息以及初始化延时队列等内容。文章通过代码示例和流程图,逐步解析了延迟消息的发送、接收及处理机制,帮助读者深入了解 Redisson 延迟队列的工作原理。
|
2月前
|
Prometheus 监控 Cloud Native
介绍如何使用Prometheus进行监控
介绍如何使用Prometheus进行监控
170 3
|
2月前
|
Prometheus 监控 Cloud Native
docker安装prometheus+Granfan并监控容器
【9月更文挑战第14天】本文介绍了在Docker中安装Prometheus与Grafana并监控容器的步骤,包括创建配置文件、运行Prometheus与Grafana容器,以及在Grafana中配置数据源和创建监控仪表盘,展示了如何通过Prometheus抓取数据并利用Grafana展示容器的CPU使用率等关键指标。
|
3月前
|
存储 Prometheus 监控
Grafana 与 Prometheus 集成:打造高效监控系统
【8月更文第29天】在现代软件开发和运维领域,监控系统已成为不可或缺的一部分。Prometheus 和 Grafana 作为两个非常流行且互补的开源工具,可以协同工作来构建强大的实时监控解决方案。Prometheus 负责收集和存储时间序列数据,而 Grafana 则提供直观的数据可视化功能。本文将详细介绍如何集成这两个工具,构建一个高效、灵活的监控系统。
321 1
|
3月前
|
Prometheus 监控 Cloud Native
使用Prometheus搞定微服务监控
使用Prometheus搞定微服务监控
使用Prometheus搞定微服务监控
|
3月前
|
Prometheus Kubernetes 监控
Kubernetes(K8S) 监控 Prometheus + Grafana
Kubernetes(K8S) 监控 Prometheus + Grafana
208 2
|
3月前
|
开发者 云计算 数据库
从桌面跃升至云端的华丽转身:深入解析如何运用WinForms与Azure的强大组合,解锁传统应用向现代化分布式系统演变的秘密,实现性能与安全性的双重飞跃——你不可不知的开发新模式
【8月更文挑战第31天】在数字化转型浪潮中,传统桌面应用面临新挑战。本文探讨如何融合Windows Forms(WinForms)与Microsoft Azure,助力应用向云端转型。通过Azure的虚拟机、容器及无服务器计算,可轻松解决性能瓶颈,满足全球用户需求。文中还提供了连接Azure数据库的示例代码,并介绍了集成Azure Storage和Functions的方法。尽管存在安全性、网络延迟及成本等问题,但合理设计架构可有效应对,帮助开发者构建高效可靠的现代应用。
30 0
|
3月前
|
Prometheus 监控 Cloud Native
基于prometheus的微服务指标监控
基于prometheus的微服务指标监控
|
3月前
|
Prometheus 监控 Cloud Native
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?

热门文章

最新文章