前言本文主要介绍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 ServerRetrieval (检索/抓取)作用负责按照配置的时间间隔从 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/prometheusPQL查询语句参考资料https://prometheus.io/docs/prometheus/latest/querying/functions/二、grafana官网下载链接Download Grafanadashboard模版链接Grafana dashboards | Grafana Labs本文作者JasonChen陈杰转载请标注原文链接。后续会持续更新专题内容。