Key Word:
来自于 Google 的 Borg 体系,它的原型系统叫作 BorgMon
2012 前Google工程师在 SoundCloud 上研发的开源系统监视和警报工具
2016 年加入 CNCF 成为第二个孵化项目
用于指标收集及告警,不包括日志或者分布式追踪
古希腊语:Προμηθεύς、英语:Prometheus,名字的含义是“先见之明”
当时宙斯禁止人类用火,普罗米修斯看到人类生活的困苦,帮人类从奥林匹斯山盗取了火,因此触怒宙斯。
宙斯为了惩罚人类,将潘多拉的盒子放到人间。
再将普罗米修斯锁在高加索山的悬崖上,每天派一只鹰去吃他的内脏。
特点:
多维数据模型,度量名称、标签(键值对)、时间序列数据
PromQL,灵活的查询语言,利用此进行数据操作
不依赖分布式存储;单个服务器节点是自治的
时间序列收集通过HTTP上的拉模型进行
通过中间网关支持推送时间序列
通过服务发现或静态配置发现目标
多种图形和仪表板支持模式
组成:
Promethues 用于主动收集及存储时间序列数据
Exporter 用于某种服务的指标监控及暴露
PushGateway 用于接受短期工作的服务主动推送指标
AlertManager 用于告警处理,例如通过邮件推送
ClientLibraries 用于自行开发的服务指标监控及暴露
目前整体的解决方案统称为 Prometheus Stack
基于 Kuberentes Operator,包括对 Kuberentes Cluster的监控
并且实现了对监控目标的动态发现(基于标签或者注解)
架构:
Pull & Push
Promethes 支持 Pull 模式拉取监控数据,也支持 Push 模式,区别在于数据的采集方。
Pull 模式:由Prometheus 定期 Pull 对应 Job 定义的 Target 来获取对应的监控数据。
Push 模式:由被监控对象主动 Push 监控数据到 PushGateway,而后Prometheus 在从 PushGateway 进行数据采集。
默认情况下,Prometheus 官方推荐使用 Pull 模式,但由于某些特殊场景下,例如批处理作业等无法知道具体的执行时间从而确定何时进行采集,或者是网络无法直接被 Prometheus 访问,从而要使用 Push 模式进行主动推送监控数据。