文章目录
Prometheus介绍与MySQL监控
本文转载自:Prometheus介绍与MySQL监控
简介
普罗米修斯是一个开源系统监控和警报工具包。
它能监控很多东西,比如机器,JMX,数据库,一些软件等。
git地址: https://github.com/prometheus
组件
- Prometheus Server : 用于收集和存储时间序列数据。
- Client Library : 客户端库,为需要监控的服务生成相应的 metrics 并暴露给 Prometheus server。当Prometheus server 来 pull 时,直接返回实时状态的 metrics。
- Push Gateway : 主要用于短期的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。为此,这次 jobs 可以直接向 Prometheus server 端推送它们的 metrics。这种方式主要用于服务层面的metrics,对于机器层面的 metrices,需要使用 node exporter。
- Exporters : 用于暴露已有的第三方服务的 metrics 给 Prometheus。
- Alertmanager : 从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件,pagerduty,OpsGenie, webhook 等。
- 一些其他的工具。
架构图:
特点
- 多维数据模型
- 时间序列数据通过metric名和键值对来区分
- 所有的metrics都是可以设置为多维标签
- 灵活的查询语句
- 高效
- 采用pull模式采集时间序列
- 可以采用push gateway的方式推送数据之Prometheus server端
- 可以通过服务发现或者静态配置去获取监控的targets
工作流程
其大概的工作流程是:
- Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自 Pushgateway 发过来的 metrics,或者从其他的 Prometheus server 中拉 metrics。
- Prometheus server 在本地存储收集到的 metrics(保存在
data
目录下),并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报。 - Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警。
- 在图形界面中,可视化采集数据。
数据模型
Prometheus 中存储的数据为时间序列,是由 metric 的名字和一系列的标签(键值对)唯一标识的,不同的标签则代表不同的时间序列。
- metric 名字:该名字应该具有语义,一般用于表示 metric 的功能,例如:
http_requests_total
, 表示 http 请求的总数。 - 标签:使同一个时间序列有了