监控一哥Prometheus你可认识?

  • 2019 年 10 月 7 日
  • 筆記

【这是一猿小讲的第 54 篇原创分享】

先大致认识认识普罗米修斯 —— Prometheus。依据官方文档https://prometheus.io/docs/introduction/overview/ 大概能够了解到 Prometheus 是一个开源系统监控和报警工具包,通过基于 Http 的 pull 方式采集时序数据,支持多种多样的图表和界面展示。

如上面官方架构图所示,能看出 Prometheus 的生态中主要是由 exporters、Pushgateway、Prometheus server、AlertManager、Prometheus web UI 几个套件组成。

我感觉如果要一直这么聊下去,估计你会选择灰溜溜的走开,所以要细说每个套件都是干啥用的,那不妨在官方架构图的基础之上,再为你们上一图。

如上图所示,我简单把 Prometheus 的生态划分为数据源、数据归集处理、数据应用三大层。

数据源层,主要是通过两种形式生产数据。

  • 一种是通过让应用加入Clinet lib类库集成 Prometheus,然后向PushGateway推送监控指标的数据。例如 Prometheus 对 flink 监控时,需要加入 flink-metrics-prometheus_xxxx.jar 类库进行支持;
  • 另一种则是直接通过 Prometheus 提供的系列 xx_exporter 完成监控指标数据的收集,例如 node_exporter 可以用来收集服务器的 CPU、内存、磁盘、I/O 等信息,(这就是上期分享中的 PGOne 中的 One Exporter

数据归集处理层,主要是 Prometheus server 通过 Http 的 pull 方式从数据源层拉取并存储监控的指标数据;然后运行已定义好的告警规则,向数据应用层的 Alertmanager 推送警报。思考 Prometheus server 背后,肯定要维护一份监控的目标对象 targets,不然怎么知道从哪儿拉取数据呢?实践中再进行体会吧,先知道这层是干啥的就行了。

数据应用层,我粗略的把这块划分为报警管理和监控数据展示两大应用。其中报警管理,是指 Alertmanager 依据配置,对接收到的 alerts 进行处理,发出告警;监控数据展示主要是进行监控指标数据的展示,常用的组件是 Grafana(这又是个啥玩意?放心,Grafana 后面会聊)。

到这应该对监控一哥普罗米修斯有了全新的认识,以后在技术选型的时候不妨也稍微考虑一下他,本次主要是搞懂理念,关于实战部分咱们单独开篇去讲。