前言
本文主要介绍Prometheus的架构和官网常用链接。
什么是Prometheus
所谓的Prometheus是一款开源的监控系统,可以监控主流的中间件,操作系系统,硬件设备,网络设备等。相比于zabbix而言,Prometheus强项是对容器的监控,微服务的监控更加方便。Prometheus作为CNCF第二个毕业项目,也是采用了GO语言编写。
🤔为什么不用zabbix呢?
zabbix采用cs架构
服务端
客户端agent
如果监控pods,可以通过sidecar边车模式共享数据,在边车上部署agent。但是agent上的配置可能会依赖pods的ip地址,pods删除,ip会变,不灵活。
Prometheus架构
推荐阅读:
https://prometheus.io/docs/introduction/overview/
Prometheus Server
Retrieval (检索/抓取):
作用:负责按照配置的时间间隔,从 Targets 或 Pushgateway 拉取监控数据。
TSDB (Time Series Database - 时序数据库):
作用:Prometheus 内置的高效存储引擎,专门用于存储带有时间戳的序列数据。
存储位置:数据最终会落盘存储在本地磁盘(图中底部的Node / HDD/SSD)上。
HTTP Server:
作用:提供 HTTP API 接口,提供WEBUI界面对外暴露数据查询能力。
PromQL:
作用:这是 Prometheus 内置的查询语言。用户、Grafana 或 API 客户端通过 HTTP Server 发送 PromQL 语句来查询 TSDB 中的数据。
服务发现 (Service Discovery)
Service discovery (服务发现):
作用:在动态环境(如 Kubernetes 集群)中,目标的 IP 地址经常变化。手动配置监控目标是不现实的。
组件:图中列出了
kubernetes和file_sd。机制:Prometheus 通过服务发现机制自动找到当前存活的目标列表(Discover targets),并动态更新抓取配置,无需重启服务。
数据采集端 (Data Collection)
这是监控数据的来源,主要分为两类:
Prometheus targets (Jobs/exporters):
作用:这是最常规的监控目标。通常是一些长期运行的服务(如 Web 服务器、数据库)或者专门用来导出指标的Exporters(例如 Node Exporter 监控主机硬件,MySQL Exporter 监控数据库)。
机制:Prometheus Server 会定期通过 HTTP 请求从这些目标的
/metrics接口拉取 (Pull)数据。
Short-lived jobs (短生命周期任务):
作用:针对那些运行时间很短、可能来不及被 Prometheus 拉取就结束的任务(如批处理脚本、Cron Job)。
Pushgateway:由于 Prometheus 无法及时拉取这类任务,这些任务在退出前会主动将指标Push(推送)到Pushgateway。然后,Prometheus Server 再从 Pushgateway 拉取这些数据。
报警管理 (Alerting)
Prometheus alerting (报警规则):
作用:Prometheus Server 会根据配置的报警规则(Alerting Rules)定期评估数据。如果满足条件(例如 CPU 使用率 > 80% 持续 5 分钟),就会生成报警。
Alertmanager:
作用:Prometheus Server 将报警推送到 Alertmanager。Alertmanager 负责对报警进行去重、分组、抑制(例如服务器宕机时不再发送该服务器上的应用报警),并负责路由。
通知渠道:图中显示它可以对接pagerduty、Email等,将报警发送给相关人员。
数据可视化与导出 (Data Visualization and Export)
Prometheus web UI:
作用:Prometheus 自带的简单 Web 界面,用于执行 PromQL 查询和查看简单的图表。
Grafana:
作用:最流行的可视化工具。它通过 PromQL 从 Prometheus 读取数据,展示精美的仪表盘(Dashboard)。
API clients:
作用:其他程序可以通过 Prometheus 的 HTTP API 获取数据,进行自定义的处理或集成。
官网
一、Prometheus
官网地址:https://prometheus.io/
官方架构图:https://prometheus.io/docs/introduction/overview/github地址:https://github.com/prometheus/prometheus
PQL查询语句参考资料
https://prometheus.io/docs/prometheus/latest/querying/functions/
二、grafana
官网下载链接:
Download Grafana
dashboard模版链接:
Grafana dashboards | Grafana Labs
本文作者JasonChen陈杰,转载请标注原文链接。后续会持续更新专题内容。