Prometheus简介:
Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于Kubernetes 的项目。
作为新一代的监控框架,Prometheus 具有以下特点:
由指标名称和和键/值对标签标识的时间序列数据组成的多维数据模型。
灵活强大的查询语言PromQL。
不依赖分布式存储;单个服务节点具有自治能力。
时间序列数据是服务端通过 HTTP 协议主动拉取(Pull)获得的。
也可以通过中间网关来推送(Push)时间序列数据。
可以通过静态配置文件(Prometheus.yml)或服务发现来获取监控目标。
Prometheus主要组件:
Prometheus系统有多个组件构成,并且其中部分组件是可选的。大部分Prometheus组件是由Go语言编写,所以使得这些组件很容易编译和部署。
Prometheus Server:核心的服务器端,主要负责存储时间序列数据。
Prometheus Client: 客户端,将需要被监控的服务生成对应的metrics,并暴露给Prometheus Server。
Push Gateway:除了Pull方式,Prometheus还支持通过Push Gateway主动向服务端推送数据。该组件主要用于存在时间较短的任务,由于这类任务存在时间较短,可能当Prometheus来拉取(pull)之前,数据已经消失了,所以,这些任务可以直接向Prometheus Server主动端推送自己的metrics。这种方式主要用于服务层面的metrics,如果是机器层面的metrics,则需要用到exporter。
Exporter:类似Agent,安装在客户端上,用来监控数据,并向服务器端提供监控数据样本,常见的有:node_exporter用来收集硬件信息、mysqld_ exporter用于收集MySQL信息等等,可以根据自身需要选择不同的Exporter。更多Exporter可以在https://prometheus.io/docs/instrumenting/exporters/中查看
Alertmanager:用来处理报警,将告警信息发送给用户。
Prometheus 架构图:
结合上面的架构图可以知道,Prometheus获