Prometheus的介绍
基于HTTP call 从配置文件中指定的网络端点(Endpoint)上周期性获取指标数据
最简单的逻辑如下图
- Prometheus支持通过三种类型的途径从目标上
抓取(Scrape)
指标数据
- Exporters
- Instrumentation(测量系统 内建Prometheus兼容的指标暴露器)
- Pushgateway(短生命周期任务 启动/结束时间不确定)
基于prometheus监控软件
(1)Prometheus server:
prometheus的服务端,负责收集指标和存储时间序列数据,并提供查询接口。
(2)exporters:
如果想要监控,前提是能获取被监控端数据,并且这个数据格式必须遵循Prometheus数据模型,
这样才能识别和采集,一般使用exporter数据采集器(类似于zabbix_agent端)提供监控指标数据。
exporter数据采集器,除了官方和GitHub提供的常用组件exporter外,我们也可以为自己自研
的产品定制exporters组件哟。
(3)Pushgateway:
短期存储指标数据,主要用于临时性的任务。比如备份数据库任务监控等。
本质上我们可以理解为Pushgateway可以帮咱们监控自定义的监控项,这需要咱们自己编写脚本来
推送到Pushgateway端,而后由Prometheus server从Pushgateway去pull监控数据。
换句话说,请不要被官方的架构图蒙骗了,咱们完全可以基于Pushgateway来监控咱们自定义的监
控项哟,这些监控项完全可以是长期运行的呢!
(4)Service discovery:
服务发现,例如我们可以配置动态的服务监控,无需重启Prometheus server实例就能实现动态监控。
(5)Alertmanager:
支持报警功能,比如可以支持基于邮件,微信,钉钉报警。
cAdvisor (Container Advisor):容器监控
康题呢,艾的瓦一则
cAdvisor 是 Google 开发的一个开源工具,主要用于监控容器运行时的性能指标。
它可以收集、聚合和导出容器的资源使用情况和性能数据,比如 CPU、内存、网络和磁盘使用情况,帮助你了解容器的运行状态。
使用场景: cAdvisor 通常用于监控 Kubernetes 集群中运行的容器,
帮助管理员了解每个容器的资源消耗情况,以便进行容量规划或故障诊断。
cAdvisor 的关键特点:
资源监控:实时监控容器的 CPU、内存、网络、文件系统等资源使用情况。
支持多种容器引擎:cAdvisor 原生支持 Docker,但也可以扩展以支持其他容器引擎。
易于集成:可以很方便地与 Prometheus、InfluxDB 等监控和时序数据库进行集成,便于进一步的数据分析。
自动发现容器:cAdvisor 自动发现本机运行的容器,并开始收集它们的资源使用数据。
轻量级:占用系统资源较少,适合在生产环境中部署。
node_exporter :监控 Linux 服务器
node_exporter
Node Exporter 是 Prometheus 官方提供的一个系统级别的指标导出工具,
专门用于监控 Linux 服务器的硬件和操作系统级别的资源使用情况。
Node Exporter 通过采集服务器的硬件状态和系统信息,帮助管理员了解系统运行情况。
使用场景: Node Exporter 通常部署在每台 Linux 服务器上,与 Prometheus 配合使用,
监控集群中各个节点的健康状态以及资源消耗情况。它适用于对物理服务器和虚拟机的系统级别监控。
Node Exporter 的关键特点:
- 系统级别监控:监控 Linux 服务器的 CPU、内存、磁盘 I/O、文件系统、网络等指标。
- 模块化设计:Node Exporter 有多个采集器(collector)模块,可以根据需要启用或禁用不同的模块,来定制监控的内容。例如,常用的模块包括
cpu
、diskstats
、filesystem
、loadavg
、memory
、network
等。 - 与 Prometheus 集成:Node Exporter 专为 Prometheus 设计,数据通过 HTTP /metrics 接口暴露,Prometheus 服务器可以定期拉取这些数据。
- 轻量级、稳定性强:Node Exporter 被设计为长期运行的小工具,资源占用较少,非常适合在生产环境中使用。
监控软件 Prometheus 和 Grafana (服务端)
Prometheus 和 Grafana 的协同工作
Prometheus + Grafana 是常见的监控栈组合:
Prometheus 负责采集、存储和分析监控数据。
Grafana 则用来展示这些数据,提供更直观的视图和交互式仪表盘。
Prometheus
Prometheus 是一个开源的系统监控和报警工具,最早由 SoundCloud 开发,
如今已成为 CNCF(云原生计算基金会)的一部分。
它专注于处理指标数据,通过拉取的方式(pull)从目标服务器采集时间序列数据,
并支持强大的查询语言 (PromQL) 来进行数据分析和报警设置。
使用场景: Prometheus 常用于监控分布式系统、容器编排环境(如 Kubernetes),
它能够实时收集和查询服务器、应用程序和服务的指标数据,并根据这些数据触发告警。
Prometheus 的关键特点:
- 时间序列数据库:Prometheus 以时间序列的形式存储所有的监控数据,适合处理实时性强的监控任务。
- 数据模型:数据以多维标签 (label) 的方式存储,支持高效查询和过滤。
- PromQL 查询语言:Prometheus 提供 PromQL,用于复杂的查询和数据聚合,方便自定义监控规则。
- 主动拉取数据:Prometheus 定期从指定的 Exporter(例如 Node Exporter、cAdvisor)等监控目标拉取数据。
- 告警管理:通过 Alertmanager 组件,Prometheus 可以根据设定的规则发送告警,支持 Email、Slack 等多种渠道。
- 多种集成:Prometheus 支持与 Kubernetes、Docker、etcd 等云原生技术紧密集成,特别适合监控动态的微服务架构。
Grafana
Grafana 是一个开源的数据可视化平台,专门用于创建、探索和共享丰富的仪表盘(Dashboard)。
它能够从多种数据源(包括 Prometheus、InfluxDB、Elasticsearch、MySQL 等)中拉取数据,
并提供丰富的图表选项和自定义功能,帮助用户实时查看系统和应用的状态。
使用场景: Grafana 通常与 Prometheus 等监控系统配合使用,用于数据的可视化展示。
它通过创建直观的图表和仪表盘,帮助运维和开发人员快速了解系统的运行状态、定位问题和优化性能。
Grafana 的关键特点:
- 多数据源支持:Grafana 能够连接多种监控和数据库系统,例如 Prometheus、Graphite、Elasticsearch、InfluxDB、MySQL、PostgreSQL 等。
- 丰富的图表:Grafana 提供各种图表、指标显示方式,可以通过拖放式操作生成复杂的仪表盘,如折线图、饼图、柱状图、热图等。
- 动态查询和过滤:通过 Grafana,可以对数据进行实时查询,支持多种变量配置,仪表盘中的图表可以动态调整以展示不同的数据视角。
- 用户权限管理:Grafana 允许多用户协作,可以为不同用户设置不同的访问权限,以控制谁可以查看、编辑和管理仪表盘。
- 报警功能:Grafana 支持对数据进行报警设置,虽然一般 Prometheus 负责数据采集和报警,但 Grafana 可以提供图形化界面的报警展示。