开发自己的分布式监控Prometheus Exporter时遇到的坑
2017-09-29 23:39
1016 查看
这里说下我在开发自己的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,开发过程中需要注意一下几点:Exporter的整体文本数据格式:Exporter的返回的是文本内容,其中以行为单位,空行将被忽略, 文本内容最后一行为空行;文本内容以“# HELP”开头的行为注释,表示帮助信息,以“# TYPE”开头的行表示此Metric的类型;exporter有四种数据类型,分别为:counter/gauge/histogram/summary。
Exporter每一行文本的格式在每一行文本的最后不能有空格,否则会不识别
在每一Metric行代表一个Key、Value对,Value的值是float类型,如果有两个Value值,最后一个会被认为是时间戳进行保存,比如: http_requests_total{method="post",code="200"} 1027 1395066363000
Metrics的Label的value值必须要用双引号“”引起来
Exporter的Content-Type必须是text类型:这里我flask返回页面的Content-Type设置为:text/plain
4. Prometheus有自己的python的client: 项目地址如下:https://github.com/prometheus/client_python 如果不想重复造轮子,可以选择用官网提供的lient端。 5. Exporter接口的响应时间 默认Prometheus是每隔15秒抓取一次数据,每次的timeout超时时间是10s,这个也可以在配置文件里自定义。要注意Exporter的接口响应时间一定要比server配置里的小。
如果对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,开发过程中需要注意一下几点:Exporter的整体文本数据格式:Exporter的返回的是文本内容,其中以行为单位,空行将被忽略, 文本内容最后一行为空行;文本内容以“# HELP”开头的行为注释,表示帮助信息,以“# TYPE”开头的行表示此Metric的类型;exporter有四种数据类型,分别为:counter/gauge/histogram/summary。
Exporter每一行文本的格式在每一行文本的最后不能有空格,否则会不识别
在每一Metric行代表一个Key、Value对,Value的值是float类型,如果有两个Value值,最后一个会被认为是时间戳进行保存,比如: http_requests_total{method="post",code="200"} 1027 1395066363000
Metrics的Label的value值必须要用双引号“”引起来
Exporter的Content-Type必须是text类型:这里我flask返回页面的Content-Type设置为:text/plain
4. Prometheus有自己的python的client: 项目地址如下:https://github.com/prometheus/client_python 如果不想重复造轮子,可以选择用官网提供的lient端。 5. Exporter接口的响应时间 默认Prometheus是每隔15秒抓取一次数据,每次的timeout超时时间是10s,这个也可以在配置文件里自定义。要注意Exporter的接口响应时间一定要比server配置里的小。
相关文章推荐
- Android开发过程中遇到的问题和自己的解决办法,简单总结,欢迎借鉴
- [swift]iOS开发:使用rar解压库Unrar4iOS遇到的那些坑,另附上自己的一个简易版的本地沙盒文件浏览器
- 转角遇到Zabbix:企业级分布式系统监控部署
- EPG组合 (Exporter Prometheus Grafana) 监控MySQL
- [置顶] 自己开发的分布式erp系统的界面设计
- 分布式监控开发 03 表结构设计
- 给目前自己开发的分布式系统做个定义
- IOS开发笔记之自己遇到的问题
- 分布式监控开发 04 客户端开发
- 自定义ListView item包含checkbox实现单选记录自己开发是遇到的问题
- 在DM8168上基于RDK_02.00.00.23,基于自带的SWOSD算法,开发自己的DSP算法遇到的问题!(我相信这个问题应该是开发DSP算法的时候都会遇到的)
- [系统集成] 部署 mesos-exporter 和 prometheus 监控 mesos task
- 分布式监控开发 05 历史数据存储
- 微信公众帐号开发。大家是用框架还是自己写的流程。现在遇到若干问题。请教各路大仙 - V2EX
- python开发支持万台设备的分布式监控软件视频教程
- Android NDK 开发自己遇到的问题
- 开发分布式网络监控分析之前端ajax展现那些事 推荐
- 开发自己的监控系统二、web篇
- 【prometheus】- Blackbox_exporter监控web页面
- Python之分布式监控系统开发