Prometheus,一个受Google的Borgmon监控系统启发而开发的开源监控解决方案,由前Google工程师在Soundcloud于2012年开始研发。于2015年早期以开源软件的形式发布,并在2016年5月成为CNCF基金会的项目。Prometheus以其对云原生监控系统的创新,已吸引650+位贡献者和120+项第三方集成。
官方入口:https://prometheus.io/
Prometheus简史
Prometheus作为云原生监控系统,强调白盒监控和黑盒监控的结合。白盒监控能深入了解系统运行状态,而黑盒监控则迅速通知故障。长期趋势分析、对照分析、告警、故障分析与定位以及数据可视化是Prometheus监控的目标。
常见监控系统对比
系统 | 优势 | 劣势 |
---|---|---|
Nagios | - 对系统服务和资源状态监控
- 插件支持丰富 |
- 与业务脱离监控
- 运维难度大 |
Zabbix | - 多样的监控功能
- 图形化界面 |
- 复杂性高
- 难以扩展 |
Prometheus | - 易于管理
- 监控服务内部状态 - 强大的数据模型 |
- 不适用于日志监控
- 近期数据存储 |
Prometheus的优势
- 易于管理
- 单一二进制文件,无第三方依赖。
- 基于Pull模型,可在任何地方搭建监控系统。
- 监控服务的内部运行状态
- 鼓励监控服务内部状态。
- 丰富的Client库支持轻松添加对Prometheus的支持。
- 强大的数据模型
- 时间序列数据库(TSDB)保存所有监控数据。
- 标签(Labels)提供灵活的数据聚合和过滤。
- 强大的查询语言PromQL
- 用于查询、聚合和可视化监控数据。
- 适用于Grafana等可视化工具。
- 高效可扩展
- 处理数以百万的监控指标。
- 支持联邦集群,可扩展性强。
- 易于集成
- 客户端SDK支持多语言,容易集成。
- 支持与其他监控系统集成。
- 可视化
- 内置UI、Promdash和Grafana支持可视化。
- 提供API实现自定义监控可视化UI。
- 开放性
- Prometheus输出格式支持多种监控系统,如Graphite。
Prometheus监控流程
- 指标收集
- 直接采集:应用程序通过Prometheus客户端埋点。
- 间接采集:通过Exporter从黑盒系统导出指标。
- Exporter监控程序
- 从黑盒系统中抓取数据。
- 将metrics端点暴露供Prometheus抓取。
- PromQL查询语言
- 内置的强大查询语言。
- 用于实时选择和汇聚时间序列数据。
- 监控告警
- Prometheus server周期性计算告警规则。
- 触发条件满足后,将告警信息推送至Alertmanager。
- Alertmanager处理告警
- 分组并路由告警。
- 通过接收器通知用户,如Email、钉钉等。
总结
Prometheus作为开源监控工具,以其易于管理、强大的数据模型、PromQL查询语言、可扩展性等优势,成为云原生环境下的首选监控系统。通过指标收集、Exporter监控程序、PromQL查询、监控告警等步骤,实现了全方位的系统监控。Prometheus在监控领域的创新,为用户提供了更灵活、高效、可视化的监控体验。