开发自己的分布式监控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 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
相关文章
|
4天前
|
数据管理 API 调度
鸿蒙HarmonyOS应用开发 | 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
HarmonyOS Next 是华为新一代操作系统,专注于分布式技术的深度应用与生态融合。本文通过技术特点、应用场景及实战案例,全面解析其核心技术架构与开发流程。重点介绍分布式软总线2.0、数据管理、任务调度等升级特性,并提供基于 ArkTS 的原生开发支持。通过开发跨设备协同音乐播放应用,展示分布式能力的实际应用,涵盖项目配置、主界面设计、分布式服务实现及部署调试步骤。此外,深入分析分布式数据同步原理、任务调度优化及常见问题解决方案,帮助开发者掌握 HarmonyOS Next 的核心技术和实战技巧。
121 76
鸿蒙HarmonyOS应用开发 | 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
|
1月前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
254 3
|
23小时前
|
存储 数据采集 Prometheus
Grafana Prometheus Altermanager 监控系统
Grafana、Prometheus 和 Alertmanager 是一套强大的开源监控系统组合。Prometheus 负责数据采集与存储,Alertmanager 处理告警通知,Grafana 提供可视化界面。本文简要介绍了这套系统的安装配置流程,包括各组件的下载、安装、服务配置及开机自启设置,并提供了访问地址和重启命令。适用于希望快速搭建高效监控平台的用户。
37 20
|
3天前
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
32 3
|
3天前
|
Prometheus 监控 Cloud Native
无痛入门Prometheus:一个强大的开源监控和告警系统,如何快速安装和使用?
Prometheus 是一个完全开源的系统监控和告警工具包,受 Google 内部 BorgMon 系统启发,自2012年由前 Google 工程师在 SoundCloud 开发以来,已被众多公司采用。它拥有活跃的开发者和用户社区,现为独立开源项目,并于2016年加入云原生计算基金会(CNCF)。Prometheus 的主要特点包括多维数据模型、灵活的查询语言 PromQL、不依赖分布式存储、通过 HTTP 拉取时间序列数据等。其架构简单且功能强大,支持多种图形和仪表盘展示模式。安装和使用 Prometheus 非常简便,可以通过 Docker 快速部署,并与 Grafana 等可
30 2
|
27天前
|
存储 Prometheus 监控
监控堆外第三方监控工具Prometheus
监控堆外第三方监控工具Prometheus
45 3
|
1月前
|
存储 Prometheus 运维
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案
在云原生环境中,阿里云ARMS与Prometheus的集成提供了强大的应用实时监控解决方案。该集成结合了ARMS的基础设施监控能力和Prometheus的灵活配置及社区支持,实现了全面、精准的系统状态、性能和错误监控,提升了应用的稳定性和管理效率。通过统一的数据视图和高级查询功能,帮助企业有效应对云原生挑战,促进业务的持续发展。
38 3
|
1月前
|
Prometheus 监控 Cloud Native
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?
在 HBase 集群中,Prometheus 监控关注的核心指标包括 Master 和 RegionServer 的进程存在性、RPC 请求数、JVM 内存使用率、磁盘和网络错误、延迟和吞吐量、资源利用率及 JVM 使用信息。通过 Grafana 可视化和告警规则,帮助管理员实时监控集群性能和健康状况。
|
1月前
|
数据采集 存储 监控
公司监控软件:基于 PHP 的分布式监控系统设计
本文介绍了基于 PHP 的分布式监控系统的设计与实现。该系统包括监控节点、数据采集模块、数据传输模块和监控中心,能够高效地收集、传输和分析各节点的数据,确保系统的稳定运行和安全防护。通过示例代码展示了数据采集、传输及存储的具体实现方法,并强调了安全与可靠性的重要性。
51 3
|
1月前
|
Prometheus 监控 Cloud Native
Prometheus中的Exporter详解
【10月更文挑战第25天】Prometheus Exporter分为直接采集(如cAdvisor, Kubernetes)和间接采集(如Node Exporter)两类。