prometheus

什么是prometheus?

一个集成了监控和告警套件的开源系统.2016年继kubernetes后第二个在CNCF托管的项目.prometheus以时间序列数据收集和存储metric.metric信息使用时间戳和键/值对形式的labels来存储.

特性

  1. 基于由metric名称和键/值对标识的时间序列数据组成的多维数据模型.

  2. 灵活的查询语言promQL

  3. 不依赖分布式存储;单服务节点具备自治能力

  4. 通过HTTP协议拉取数据

  5. 推送数据通过中间网关

  6. 通过服务发现或静态配置来获取targets.

  7. 支持多类型的图形和仪表盘.

主要组件

prometheus server

核心组件,收集和存储时间序列数据,支持PromQL查询语言.内置web UI,可通过PromQL实现数据的查询和可视化.

push gateway

提供push模式传输数据,是一种中间服务.由于prometheus采集数据基于PULL模式设计,若想让client主动push监控数据,需要增加push gateway中间网关来接收这些push的数据,然后prometheus通过PULL方式获取数据.

exporter

采集targets的监控数据,通过HTTP服务方式暴露给prometheus server,prometheus通过HTTP协议周期性的获取监控数据.

alertmanager

处理由客户端应用程序发来报警,负责根据用户定义的报警路由向接收人发送报警信息.

架构

prometheus架构和生态系统组件图

如何采集监控数据?

  1. 在采集targets安装采集组件,即exporter.官方提供多种exporter.

  2. exporter采集targets的监控数据,同时向server暴露HTTP接口.

  3. prometheus server定期从静态配置或服务发现的target拉取数据(zookeepr,consul等).

  4. 当新拉取的数据大于配置内存缓存区的时候,prometheus会将数据持久化到磁盘,或者持久化到云端.

  5. prometheus通过PromQL,API和其他可视化组件(grafana,promdash)展示数据.

  6. prometheus可以配置rules,定时查询数据,当rules被触发时,将告警推送到alertmanager.

  7. alertmanager收到告警后,根据配置,聚合,去重,降噪后发出告警.

Last updated