1. Prometheus 体系架构简介

监控安防系统架构 监控平台系统架构_prometheus

Prometheus 是 CNCF 基金会的一款开源产品,主要用做监控系统,通常用来和 Zabbix 等监控系统做比较,以其简单易用、架构灵活著称。整个 Prometheus 的架构如上,分为几个重要的部分:

  • 指标收集端 - 上图左侧部分,可以类比为常用监控系统的 agent 侧,通常为被监控侧提供采集指标,以定期拉取的方式被 Server 端采集,有被监控系统自提供和 exporter 采集提供两种方式;也存在左上角 Pushgateway 方式主动推送的采集方式,不常用;
  • Prometheus server - 监控核心服务,主要提供定期抓取指标、时序数据存储、推送告警、提供查询服务 四种功能,默认情况下,监控数据存储于服务本地 15 天;
  • AlertManager - 告警服务,通过自定义的告警规则进行告警,提供多种告警方式,可以对接外部系统;
  • PromQL - 查询语法,该功能是 server 提供的,通过一些标准的数学计算方式,对外提供时序数据查询功能,可以对接 Grafana 做图形化展示,也可以直接通过 API 的方式对外提供服务;

监控安防系统架构 监控平台系统架构_监控安防系统架构_02

这张图主要介绍了两种不同的采集方式,上面直接采集的方式很多数据库都可以提供,比如 OceanBase、Clickhouse 等;下面的方式是通过 Exporter 的方式进行采集,比如 Linux 操作系统指标、PG/MySQL/Redis/Mongo 等都有专门的 exporter;

监控安防系统架构 监控平台系统架构_运维_03

这张图展示了数据抓取和数据展示的简单架构,增加了展示端支持的不同方式。

监控安防系统架构 监控平台系统架构_prometheus_04

这张图引入了 Alertmanager,展示了所支持的一些不同告警方式。

2. Prometheus 能监控什么

基本所有的服务都能监控,下面放一张表简单介绍一下我们可能经常用到的功能:

监控安防系统架构 监控平台系统架构_数据库_05


监控安防系统架构 监控平台系统架构_监控系统_06

基本上你能想到的服务,都能监控到,并且提供丰富的指标项目,可自行扩展。
下面主要看一下用来监控 Linux 操作系统用量的 node_exporter 能监控什么指标:

  • 系统运行时间
  • 总内存、总CPU数、磁盘总空间大小
  • CPU使用率、CPU 平均负载
  • 内存使用率
  • 磁盘 IOPS,磁盘读写速度
  • 磁盘可用空间、空间使用率
  • 每小时/分钟/秒 网卡上传/下载流量、网络 IO

下面放上三个参考图,其实真正能提供的图形化展示远比这要丰富,还是那句话,可以定制:

监控安防系统架构 监控平台系统架构_prometheus_07


监控安防系统架构 监控平台系统架构_数据库_08


监控安防系统架构 监控平台系统架构_监控系统_09

3. Prometheus 如何部署使用

部署方式比较简单,均可采用 Linux/Windows 二进制程序方式部署,大部分都是 Golang 写的程序,不需要类似 JDK 的虚拟机。
通常直接将服务部署为系统开机自启动服务,exporter 通常部署在服务侧。

End~