1、Prometheus架构图
如上图,Prometheus主要由以下部分组成:
Prometheus Server: 用于抓取和存储时间序列化数据
Exporters: 主动拉取数据的插件
Pushgateway: 被动拉取数据的插件
Altermanager: 告警发送模块
Prometheus web UI: 界面化,也包含结合Grafana进行数据展示或告警发送
prometheus采用time-series(时间序列)方式,存储在本地硬盘,其大概的工作流程:
(1)Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自 Pushgateway 发过来的 metrics,或者从其他的 Prometheus server 中拉 metrics。
(2)Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报。
(3)Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警。
(4)在图形界面中,可视化采集数据。
Prometheus 客户端库主要提供四种主要的 metric 类型:
Counter: 一种累加的 metric,典型的应用如:请求的个数,结束的任务数, 出现的错误数等等。
例如:,查询 http_requests_total{method=“get”, job=“Prometheus”, handler=“query”} 返回 8,10 秒后,再次查询,则返回 14。
Gauge: 一种常规的 metric,典型的应用如:温度,运行的 goroutines 的个数。可以任意加减。
例如: go_goroutines{instance=“172.17.0.2”, job=“Prometheus”} 返回值 147,10 秒后返回 124。
Histogram: -可以理解为柱状图,典型的应用如:请求持续时间,响应大小。