开源的系统监控及告警工具,适用于以服务器为中心,高动态 面向服务架构 的监控;
架构图:
prometheus server:核心,据配置采集数据,服务发现,数据存储
prometheus targets:探针exporter提供采集接口,或应用本身提供的支持promethenus数据模型采集接口
pushgateway:为部分push场景提供插件,监控数据先推送到pushgateway,再由server采集push
service discover:支持据配置file_sd监控本地配置文件的方式发现服务,支持配置监听kubernetes的api动态发现服务
alertmanager:prometheus告警插件,发送邮件/pagerduty/hipchat等
流程:
server配置探针暴露的端口地址及采集间隔时间,按时间间隔通http访问探针
探针通调用接口的方式获取监控数据并对应指标返回给server存储,如果间隔内没完成采集,这部分数据丢失
据server采集配置指标,分析采集的数据,据情况发送消息到alertmanager
alertmanager据本地配置处理告警信息:告警分组,抑制不重复,沉默
特点:
-
多维的数据模型(基于时间序列的k/v键值对)
-
灵活的查询及聚合语句(PromQL)
-
不依赖分布式存储,节点自治
-
基于HTTP的pull模式采集时间序列数据
-
可以使用pushgateway(prometheus的可选中间件)实现push模式
-
可以使用动态服务发现或静态配置采集的目标机器
-
支持多种图形及仪表盘
强调可靠性,以可能丢失少量数据为代价保证系统可用性,不适应100%数据准确率的系统
概念:
数据模型:
储存时序数据(按相同时序以时间维度存连续数据集合)
时序time series由名字,一组key/value标签定义,具有相同名字及标签属于相同时序
时序:
counter:收集数据按某趋势(增/减)变化,常记录服务请求总量,错误总数
gauge:搜集数据的一个瞬间,记录内存使用率,磁盘使用率
histogram:由<basename>_bucket{le="<upper inclusive bound>"}
,<basename>_bucket{le="+Inf"}
, <basename>_sum
,<basename>_count
组成,一段时间内对数据采样统计
summary:由<basename>{quantile="<φ>"}
,<basename>_sum
,<basename>_count组成,一段时间内采样结果,存了quantile数据
配置文件很重要,监控粒度细,消耗资源
谢谢分享:
https://www.cnblogs.com/yangxiaoyi/p/7398156.html
https://www.liangzl.com/editorImages/cawler/20180719223949_776.jpg