prometheus
什么是prometheus?
一个集成了监控和告警套件的开源系统.2016年继kubernetes后第二个在CNCF托管的项目.prometheus以时间序列数据收集和存储metric.metric信息使用时间戳和键/值对形式的labels来存储.
特性
基于由metric名称和键/值对标识的时间序列数据组成的多维数据模型.
灵活的查询语言promQL
不依赖分布式存储;单服务节点具备自治能力
通过HTTP协议拉取数据
推送数据通过中间网关
通过服务发现或静态配置来获取targets.
支持多类型的图形和仪表盘.
主要组件
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
处理由客户端应用程序发来报警,负责根据用户定义的报警路由向接收人发送报警信息.
架构
如何采集监控数据?
在采集targets安装采集组件,即exporter.官方提供多种exporter.
exporter采集targets的监控数据,同时向server暴露HTTP接口.
prometheus server定期从静态配置或服务发现的target拉取数据(zookeepr,consul等).
当新拉取的数据大于配置内存缓存区的时候,prometheus会将数据持久化到磁盘,或者持久化到云端.
prometheus通过PromQL,API和其他可视化组件(grafana,promdash)展示数据.
prometheus可以配置rules,定时查询数据,当rules被触发时,将告警推送到alertmanager.
alertmanager收到告警后,根据配置,聚合,去重,降噪后发出告警.
Last updated