type
status
date
slug
summary
tags
category
icon
password
Prometheus和Grafana简介
前言
官网地址:https://prometheus.io/docs/prometheus/latest/getting_started/
- 灵活的时间序列数据库
- 定制各式各样的监控规则
Prometheus的开发人员和用户社区非常活跃
- 独立的开源项目,不依赖于任何公司
- 继
Kurberntes之后第二个入驻的项目
Prometheus架构
Prometheus监控系统是由多个组件组成 Prometheus架构如下图所示

Prometheus 主要由Prometheus Server,Pushgateway,Job/Exportes,Service Discovery,Altermanager,Dashboard这六个核心模块构成
Prometheus通过服务发现机制发现target,这些目标可以长时间执行Job,也可以短时间执行Job,还可以是通过Export监控的第三方应用程序。被抓取的数据会存储起来,通过PromQL语句在仪表盘等可视化系统中供查询,或者向Alertmanager发送告警信息,告警会通过页面,电子邮件,钉钉信息或者其他形式呈现
采集层
- Exporters:
Prometheus定期通过HTTP请求从目标资源中拉取数据。目标资源可以是应用程序、系统、服务或其他资源。Prometheus提供大量Exporter(https://prometheus.io/docs/instrumenting/exporters/)
- Pushgateway: 用于集中管理临时性或周期性任务的指标数据,并暴露给
Prometheus Server
存储和处理层
数据存储:
Prometheus Server整个架构的核心,负责汇总后来自Exporters,Pushgateway以及其他程序提供的指标数据,并将这些数据存储到本地磁盘上。Prometheus Server还可以将数据存储到第三方存储系统上,如InfluxDB,OpenTSDB,以满足高效的存储需求- *查询和分析:**提供强大的
PromQL查询语言,支持多维数据查询和分析
展示层
- *Web UI:**内置的Web页面,可以对Prometheus进行
基本管理
- *Grafana:**提供对Grafana的支持,为用户呈现
更丰富的图表和仪表盘
- *API clients:**包含多种编程语言的客户端库,用于
与Prometheus API进行交互,为开发者提供简单易用的编程接口
告警层
- *Altermanager:**负责接收来自
Prometheus Server的告警事件,根据预定义的策略将告警通知发送到不同的通讯软件,如邮箱,微信等
Prometheus时间序列数据
什么是序列数据?
时间序列数据(
TimeSeries Data):按照时间顺序记录系统、设备状态变化的数据被称为时序数据时间序列数据特点
- 性能好:关系型数据库对于大规模数据的处理性能糟糕。
NOSQL可以比较好的处理大规模数据,依然比不上时间序列数据库。
- 存储成本低:高效的压缩算法,节省存储空间,有效降低 IO。
官方数据:Prometheus 有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用 3.5byte 左右空间,上百万条时间序列,30 秒间隔,保留 60 天,大概200多G。
Promethues适合场景
Prometheus 非常适合记录任何纯数字时间序列。它既适合以机器为中心的监控,也适合监控高度动态的面向服务的体系架构
Prometheus三大局限性
Prometheus 是一种开源的监控系统和时间序列数据库,广泛用于监控和警报系统。尽管它在许多方面都非常强大和灵活,但它也有一些局限性,主要包括以下三个方面
存储限制
- 数据保留时间:Prometheus 默认只保留15天的数据,虽然可以通过配置调整,但长期存储大量数据会占用大量磁盘空间。
- 高基数问题:当指标的标签(labels)数量非常多时,会导致存储和查询性能下降。这是因为每个唯一的标签组合都会生成一个新的时间序列,从而增加存储需求和查询复杂性。
查询语言限制
- 表达能力有限:Prometheus 的查询语言 PromQL 虽然功能强大,但在某些复杂的查询和数据分析方面可能不如其他专业数据库语言灵活。例如,它不支持嵌套查询或复杂的JOIN操作。
- 实时分析能力:PromQL 主要用于历史数据的查询和分析,对于实时数据流处理和复杂的事件驱动分析,可能需要结合其他工具或系统。
高可用性和扩展性
- 单点故障:Prometheus 本身不提供内置的高可用性解决方案,如果主节点故障,可能会导致监控中断。虽然可以通过部署多个 Prometheus 实例来实现冗余,但这需要额外的配置和管理。
- 水平扩展:虽然可以通过联邦(federation)等方式实现多个 Prometheus 实例的协同工作,但在大规模集群和高并发场景下,水平扩展仍然是一个挑战。
Grafana简述
Grafana 是一个开源的度量分析与可视化工具。提供查询、可视化、报警和指标展示等功能,能灵活创建图表、仪表盘等可视化界面
主要功能:
- 可视化: 提供多种可选择的不同类型的图形,能够灵活绘制不同样式,且还提供很多插件。
- 动态仪表盘: 提供以模板和变量的方式来创建动态且可重复使用的仪表盘,可以灵活调整。
- 浏览指标: 通过瞬时查询和动态变化等方式展示数据,可以根据不同的时间范围拆分视图。
- 警报: 可以直观地根据重要的指标定义警报规则。Grafana 将不断评估并向 Slack,邮件,快消息等系统发送通知。
- 混合数据源: 在同一图中混合不同的数据源,可以基于每个查询指定不同数据源。
Grafana每个组件的功能和作用
数据源
- 功能:数据源是Grafana
获取数据的后端服务或数据库
- 作用:Grafana支持多种数据源,如
Prometheus、Elasticsearch、InfluxDB等。用户可以根据需要配置一个或多个数据源,用于提供时间序列数据
仪表盘
- 功能:仪表盘是展示数据可视化元素的界面,可以包含多个面板
- 作用:用户可以通过拖放的方式在仪表盘中添加、组织和配置各种类型的图表和数据可视化元素,以便于同时监控多个指标
面板
- 功能:
面板是仪表盘中的基本单元,每个面板代表一个特定的图表或数据视图
- 作用:面板可以展示如折线图、柱状图、饼图等多种图表类型,用于呈现特定数据集的可视化信息
告警
- 功能:
告警系统允许用户定义规则,当数据满足这些规则时触发通知
- 作用:这有助于及时识别问题并通知相关人员,例如,如果某个服务器的CPU使用率超过阈值,则可以发送告警邮件或消息
数据探索
- 功能:
数据探索功能允许用户查询和分析原始的时间序列数据
- 作用:这可以帮助用户快速定位问题,进行数据分析,而不需要离开Grafana界面
插件系统
- 功能:
Grafana的插件系统允许扩展其核心功能。
- 作用:用户可以安装第三方插件来增强Grafana的功能,比如额外的数据源支持、新的图表类型等。
用户和组织管理
- 功能:Grafana
提供了用户和组织管理功能,包括权限控制和角色分配
- 作用:这使得团队可以协作并共享仪表盘,同时保持对数据和设置的安全访问控制
模板
- 功能:模板
是预先配置好的仪表盘或面板设置,可以用于快速创建具有一致风格或符合特定需求的仪表盘
- 作用:使用模板可以节省时间,
确保一致性,并帮助用户快速开始监控
导入/导出
- 功能:Grafana允许
导入和导出仪表盘、数据源和其他配置
- 作用:这使得在
不同的Grafana实例之间迁移或备份配置变得容易
通知渠道
- 功能:当触发告警时,Grafana可以通过多种方式发送通知,如
电子邮件、Slack、PagerDuty等
- 作用:确保即使在没有实时查看仪表盘的情况下,关键事件也能被团队成员注意到
- 作者:NotionNext
- 链接:https://tangly1024.com/article/ebbac68b-e5bf-4e03-b59e-e25ab9c06c43
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。








