【prometheus+Grafana篇】Prometheus与Grafana:深入了解监控架构与数据可视化分析平台

💫《博主主页》:奈斯DB-CSDN博客

🔥《擅长领域》:擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(MongoDB)有了解

💖如果觉得文章对你有所帮助,欢迎点赞收藏加关注💖

    在当今复杂的系统架构中,监控平台如同系统的"神经系统",能够第一时间感知系统异常,为运维人员提供关键的诊断线索。面对市面上众多的监控解决方案——从老牌稳定的Zabbix、新兴的夜莺监控,到企业级的腾讯蓝鲸平台——我们不禁要问:是否存在一款既开源免费,又能提供强大可视化能力的监控平台?

    答案是肯定的!Prometheus+Grafana 这对黄金组合正是满足这一需求的完美解决方案。作为一名长期在生产环境中使用这套工具监控各类系统的实践者,我将通过本系列文章,详细分享如何利用prometheus+Grafana监控多种数据库 💫 !

    无论是刚开始接触系统监控,还是希望优化现有的监控体系,这个系列都将为各位提供实用的参考。让我们开始这段监控实践之旅,掌握这套云原生时代最流行的监控方案!

    对于这个系列,博主主要还是分享关于prometheus+Grafana如何监控多种数据库的文章,对于需要监控其他系统或者学习prometheus其他相关内容的可以在B站上搜索“林哥Linux”UP主,这位大佬详细介绍了prometheus+Grafana,并且课程是完全免费的,免费是情谊,收费是本分,感谢大佬为爱发电 💞 ,为我们带来了如此宝贵的学习资源。

                                  

特别说明💥:本篇文章部分知识点均来源于 prometheus、Grafana 公开可查的官方文档手册和大模型DeepSeek-V3 的见解,并结合了我个人的理解和案例演示。如有冲突,请联系,会立即处理。转载请标明出处😄

                       

prometheus官网文档手册:

Overview | Prometheus

                        

Grafana 官网:

Grafana: The open and composable observability platform | Grafana Labs

                         

                 

prometheus+Grafana全系列文章(实时更新 🔥 ):

【prometheus+Grafana篇】Prometheus与Grafana:深入了解监控架构与数据可视化分析平台-CSDN博客


                                  

目录

一、Prometheus

1.1 Prometheus Server(核心服务)

1.2 Exporters(指标暴露器)

1.3 Pushgateway(临时任务指标网关)

1.4 Alertmanager(告警管理器)

1.5 Client Libraries(客户端库)

1.6 Service Discovery(服务发现)

1.7 PromQL(查询语言)

二、Grafana

2.1 Grafana Server(后端服务)

2.2 Grafana UI(前端界面)

2.3 数据源插件(Data Source Plugins)

2.4 面板插件(Panel Plugins)

2.5 告警系统(Alerting)

2.6 用户与权限管理


                

一、Prometheus

    Prometheus 是一个 开源 的系统监控和告警工具,灵感来源于 Google 的 Borgmon 监控系统(类似地,Kubernetes 也是从 Google 的 Borg 系统演变而来)。该项目从 2012 年开始由前 Google 工程师在 Soundcloud 开发,并于 2015 年早期发布了早期版本。2016 年 5 月,Prometheus 成为继 Kubernetes 之后第二个正式加入 CNCF 基金会的项目,并于同年 6 月发布了 1.0 版本。2017 年底,Prometheus 发布了基于全新存储层的 2.0 版本,进一步增强了与容器平台和云平台的兼容性。

    在官网上截一张prometheus的基础架构图,从这个架构图,可以看出Prometheus的主要模块包含:Prometheus Server、Exporters、Pushgateway、Alertmanager、Client Libraries、Service Discovery、PromQL、WebUI等。

组件核心功能适用场景
Prometheus Server数据采集、存储、查询和告警评估所有监控场景
Exporters转换第三方系统指标数据库、中间件、硬件监控
Pushgateway接收短期任务指标Cron Job、批处理任务
Alertmanager告警管理和通知异常告警通知
Client Libraries应用内直接暴露指标自定义业务监控
Service Discovery动态发现监控目标Kubernetes、云环境

PromQL

查询、聚合和分析时间序列数据所有查询场景

    通过以上组件的协同工作,Prometheus 实现了从数据采集、存储到告警和可视化的完整监控闭环。

            

              

普罗米修斯使用逻辑:

  1. Prometheus server定期从静态配置的targets或者服务发现的targets拉取数据(Targets是Prometheus采集Agent需要抓取的采集目标)
  2. 当新拉取的数据大于配置内存缓存区的时候,Prometheus会将数据持久化到磁盘(如果使用remote storage将持久化到云端)。
  3. Prometheus可以配置rules,然后定时査询数据,当条件触发的时候,会将alerts推送到配置的Alertmanager。
  4. Alertmanager收到警告的时候,可以根据配置(163,钉钉等),聚合,去重,降噪,最后发送警告。
  5. 可以使用APl,Prometheus Console或者Grafana查询和聚合数据。

          

            

普罗米修斯的主要特点:

  1. 支持多维数据模型由指标名称和键值对标识的时间序列数据
  2. 内置时间序列库TSDB(Time Serices Database)
  3. 支持PromQL(Promethues Query Language,普罗米修斯的专属查询语言),对数据的查询和分析、图形展示和监控告警。对于监控告警也使用的是PromQL(Promethues Query Language,普罗米修斯的专属查询语言)。
  4. 不依赖分布式存储,单个服务器节点是自治的。
  5. 支持HTTP的拉取(pull)方式收集时间序列数据。
  6. 通过中间网关Pushgateway推送时间序列。
  7. 通过服务发现或静态配置2种方式发现目标。
  8. 支持多种可视化和仪表盘,如:grafana。

                  

1.1 Prometheus Server(核心服务)

                       

作用:
✅ 数据抓取(Scraping):定期从配置的目标(如 Exporters、应用程序)拉取(Pull)指标数据。
✅ 数据存储:将采集的指标存储在本地时间序列数据库(TSDB)中。
✅ 数据查询:提供 PromQL 查询语言,支持实时分析和聚合数据。
✅ 告警规则评估:根据配置的告警规则alert.rules触发告警。

                     

工作流程

  1.  scrape_configs 定义的目标(如 node_exporter:9100)拉取 /metrics 数据。

  2. 将数据压缩后写入 TSDB(时间序列数据库)。

  3. 提供 HTTP API 供 Grafana 或其他工具查询数据。

                       

1.2 Exporters(指标暴露器)

            

作用
✅ 将非 Prometheus 原生指标转换为 Prometheus 可读格式。
✅ 适用于无法直接暴露 /metrics 的系统(如 MySQL、Redis、Nginx)。

✅ Prometheus社区提供了丰富的Exporter实现,涵盖了从基础设施,中间件以及网络等各个方面的监控功能。这些Exporter可以实现大部分通用的监控需求。进入到官网,然后选择download,然后点击“Exporters and integrations”

                          

常见 Exporters

范围

常用exporter

数据库

MySQL Exporter, Redis Exporter, MongoDB Exporter, MSSQL Exporter等

硬件

Apcupsd Exporter, IoT Edison Exporter, IPMI Exporter, Node Exporter等

消息队列

Beanstalkd Exporter, Kafka Exporter, NSQ Exporter, RabbitMQ Exporter等

存储

ceph Exporter, Gluster Exporter, HDFS Exporter, ScalelO Exporter等

HTTP服务

Apache Exporter, HAProxy Exporter, Nginx Exporter等

API服务

AWS ECS Exporter, Docker Cloud Exporter, Docker Hub Exporter, GitHub Exporter等

日志

Fluentd Exporter, Grok Exporter等

监控系统

Collectd Exporter, Graphite Exporter, influxDB Exporter, Nagios Exporter, SNMP Exporter等

其它

Blockbox Exporter, liRA Exporter, lenkins Exporter, Confluence Exporter等

                     

1.3 Pushgateway(临时任务指标网关)

                   

作用
✅ 接收短期任务(如 Cron Job)推送的指标。
✅ 解决 Prometheus Pull 模型无法监控短暂存活服务的问题。

               

适用场景

  • 批处理任务(如每日数据备份)

  • 无法长期运行的服务

             

工作流程

  1. 任务运行完成后,将指标推送到 Pushgateway。

  2. Prometheus 从 Pushgateway 拉取数据。

          

示例:

# 使用 curl 推送指标到 Pushgateway
echo "my_metric 3.14" | curl --data-binary @- http://pushgateway:9091/metrics/job/my_job

               

1.4 Alertmanager(告警管理器)

                           

作用
✅ 接收 Prometheus 的告警通知,并进行去重、分组和路由。
✅ 支持多种告警通知方式(邮件、Slack、Webhook 等)。

               

核心功能

  • 去重(Deduplication):合并相同告警,避免轰炸。

  • 分组(Grouping):将相关告警合并为一条通知(如同一服务的多个实例)。

  • 静默(Silencing):临时屏蔽特定告警。

                

1.5 Client Libraries(客户端库)

作用
✅ 在应用程序中直接暴露 Prometheus 格式的指标,无需额外 Exporter。

                     

支持语言

  • Go (prometheus/client_golang)

  • Java (io.prometheus)

  • Python (prometheus_client)

  • Ruby (prometheus-client)

              

示例(Go 语言)

import "github.com/prometheus/client_golang/prometheus"// 定义一个计数器
var requestCount = prometheus.NewCounter(prometheus.CounterOpts{Name: "http_requests_total",Help: "Total HTTP requests",},
)// 注册指标
prometheus.MustRegister(requestCount)// 在 HTTP 处理函数中递增
requestCount.Inc()

                 

1.6 Service Discovery(服务发现)

                           

作用
✅ 动态发现监控目标(如 Kubernetes Pods、云服务器)。

              

支持的服务发现机制

  • Kubernetes:自动发现 Pods、Services。

  • Consul:通过 Consul 注册中心获取服务列表。

  • 文件静态配置:通过 file_sd_configs 加载目标列表。

            

示例(Kubernetes 发现)

scrape_configs:- job_name: 'kubernetes-pods'kubernetes_sd_configs:- role: podrelabel_configs:- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]action: keepregex: true

           

1.7 PromQL(查询语言)

                

作用
✅ 查询、聚合和分析时间序列数据

             

常用查询示例

# 计算 CPU 使用率
100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)# 统计 HTTP 请求错误率
sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m]))

                  

                    

二、Grafana

    Grafana 是一个开源的 数据可视化与分析平台,专注于监控数据的展示和告警管理。它的架构设计灵活,支持多种数据源,并提供强大的仪表盘功能。

    Grafana 采用 前后端分离 的设计,主要分为:

  • 后端(Server):处理数据查询、用户认证、告警等逻辑。
  • 前端(UI):基于 React 的交互式仪表盘。

  • 数据源插件:支持 Prometheus、MySQL、Elasticsearch 等 30+ 数据源。

组件核心功能关键用途
Grafana Server数据处理、告警、权限管理后端逻辑处理
Grafana UI仪表盘编辑和展示用户交互界面
Data Sources连接外部数据存储统一查询不同数据库
Panel Plugins提供图表类型(折线图、表格等)数据可视化
Alerting基于查询结果的告警管理异常通知
User Management权限控制和多租户支持团队协作与安全

    Grafana 通过灵活的插件架构和强大的可视化能力,成为监控领域的事实标准工具。结合 Prometheus 使用时,能构建从数据采集、存储到分析和告警的完整监控体系。

           

                    

Grafana的主要特点:

  1. 跨平台性:Grafana是一个跨平台的开源的分析和可视化工具,支持多种操作系统,包括Linux、Windows、MacOS等。
  2. 丰富的数据源支持:Grafana支持多种数据源,如Graphite、InfluxDB、OpenTSDB、Prometheus、Elasticsearch等,使得用户可以方便地整合各种数据来源进行可视化分析。
  3. 强大的可视化功能:Grafana具有快速灵活的客户端图表,提供了丰富的仪表盘插件和面板插件,支持多种展示方式,如折线图、柱状图、饼图、点状图等,可以满足用户不同的可视化需求。
  4. 警报功能:Grafana允许用户设置警报规则,当数据达到设定阈值时,会通过邮件、钉钉、企业微信等方式发送通知,及时提醒用户关注数据异常。

           

                 

 Grafana的基本功能

  1. 数据查询与可视化:用户可以通过Grafana查询各种数据源中的数据,并将其以图表的形式展示出来,便于用户进行数据分析和监控。
  2. 仪表盘创建与编辑:Grafana提供了灵活的仪表盘创建和编辑功能,用户可以根据自己的需求自定义仪表盘,添加或删除面板,调整面板的布局和样式等。
  3. 用户管理与权限控制:Grafana支持用户管理和权限控制功能,管理员可以为不同用户设置不同的权限,确保数据的安全性和私密性。
  4. 插件扩展:Grafana支持插件扩展功能,用户可以通过安装插件来增强Grafana的功能和可视化效果。

                           

2.1 Grafana Server(后端服务)

作用
✅ 处理用户请求(如仪表盘渲染、数据查询)。
✅ 管理数据源(配置连接信息、认证)。
✅ 告警引擎(评估告警规则并触发通知)。
✅ 用户权限控制(RBAC 权限管理)。

            

关键子模块

模块功能
HTTP API提供 RESTful 接口供前端调用(如创建仪表盘、查询数据)。
Data Proxy代理查询请求到不同数据源,统一返回格式。
Alerting Engine定时检查告警规则,触发通知(需配置 alertmanager 或内置告警)。
Plugin Loader加载和管理数据源、面板等插件。

            

2.2 Grafana UI(前端界面)

作用
✅ 可视化仪表盘:拖拽式编辑图表、表格等面板。
✅ 交互式查询:通过 UI 构建查询语句(如 PromQL、SQL)。
✅ 告警管理:配置和查看告警状态。

            

核心功能

  • Dashboard:由多个 Panel(面板)组成的可视化页面。

  • Explore:直接查询和探索数据的交互模式。

  • Alerting:告警规则配置和状态查看。

  

2.3 数据源插件(Data Source Plugins)

作用
✅ 连接外部数据存储(如 Prometheus、MySQL、InfluxDB)。
✅ 转换数据格式:将不同数据源的返回结果统一为 Grafana 可识别的结构。

          

常见数据源

数据源适用场景查询语言
Prometheus监控指标分析PromQL
MySQL业务数据可视化SQL
Elasticsearch日志分析Lucene Query
Loki日志聚合(Grafana 原生方案)LogQL

    

2.4 面板插件(Panel Plugins)

作用
✅ 提供不同类型的可视化图表(如折线图、仪表盘、热力图)。
✅ 支持自定义插件开发(社区提供 100+ 面板插件)。

              

常用内置面板

面板类型用途示例
Graph时间序列数据趋势图CPU 使用率曲线
Gauge单值仪表盘磁盘剩余空间百分比
Table表格展示慢查询日志列表
Heatmap密度分布图请求延迟分布

           

2.5 告警系统(Alerting)

作用
✅ 基于数据源查询结果触发告警(如 CPU 使用率 > 90%)。
✅ 支持多通知渠道(邮件、Slack、PagerDuty)。

           

工作流程

  1. 定义告警规则:在仪表盘中配置条件(如 avg(cpu_usage) > 90)。

  2. 评估规则:Grafana 定时执行查询并检查条件。

  3. 触发通知:通过配置的渠道发送告警。

             

告警规则示例

- name: HighCPUinterval: 1mrules:- alert: CPUOverloadexpr: avg(rate(node_cpu_seconds_total[5m])) > 0.9for: 5mannotations:summary: "High CPU usage on {{ $labels.instance }}"

               

2.6 用户与权限管理

作用
✅ 控制用户访问权限(如只读用户、管理员)。
✅ 组织(Organization)隔离:支持多租户场景。

        

权限模型

角色权限范围
Viewer仅查看仪表盘
Editor编辑仪表盘,但不能修改数据源
Admin管理数据源、用户和全局设置

    关于Prometheus和Grafana的基础介绍就到这里。只有深入了解了它们的基础知识和体系架构,才能更好地进行后续的安装与部署工作。那么我们下篇安装部署见💓!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/77226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于n8n的AI应用工作流原理与技术解析

基于n8n的AI应用工作流原理与技术解析 在AI技术深度融入企业数字化转型的今天,开源工作流自动化工具n8n凭借其灵活的架构和强大的集成能力,成为构建智能自动化流程的核心引擎。本文将从技术原理、AI融合机制、典型应用场景三个维度,解析n8n在…

经济指标学习(二)

系列文章目录 文章目录 系列文章目录1、市净率**一、定义与计算****二、核心意义****三、应用场景****四、局限性****五、分类与衍生指标****总结** 2、市销率**一、定义与计算****二、核心意义****三、优缺点分析****四、适用场景****五、与其他指标的对比****六、实际应用案例…

大语言模型减少幻觉的常见方案

什么是大语言模型的幻觉 大语言模型的幻觉(Hallucination)是指模型在生成文本时,输出与输入无关、不符合事实、逻辑错误或完全虚构的内容。这种现象主要源于模型基于概率生成文本的本质,其目标是生成语法合理、上下文连贯的文本&…

CSS 美化页面(四)

一、浮动float属性 ‌属性值‌‌描述‌‌适用场景‌left元素向左浮动,腾出右侧空间供其他元素使用,其他内容会围绕在其右侧‌。横向排列元素(如导航菜单)、图文混排布局‌。right元素向右浮动,腾出左侧空间供其他元素使…

如何将 .txt 文件转换成 .md 文件

一、因为有些软件上传文件的时候需要 .md 文件,首先在文件所在的目录中,点击“查看”,然后勾选上“文件扩展名”,这个时候该目录下的所有文件都会显示其文件类型了。 二、这时直接对目标的 .txt 文件进行重命名,把后缀…

C++ 迭代器失效详解:如何避免 vector 操作中的陷阱

目录 1. 什么是迭代器失效? 2. 哪些操作会导致迭代器失效? 2.1 vector 的插入操作(push_back, insert) 示例:push_back 导致迭代器失效 如何避免? 2.2 vector 的删除操作(erase, pop_back&…

(EtherCAT 转 EtherNet/IP)EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关

型号 协议转换通信网关 EtherCAT 转 EtherNet/IP MS-GW12 概述 MS-GW12 是 EtherCAT 和 EtherNet/IP 协议转换网关,为用户提供两种不同通讯协议的 PLC 进行数据交互的解决方案,可以轻松容易将 EtherNet/IP 网络接入 EtherCAT 网络中,方便…

榕壹云酒水定制系统:基于THinKPHP+MySQL+UniApp打造数字化时代的个性化购酒新体验

数字化浪潮下的酒水定制新机遇 在消费升级与个性化需求崛起的背景下,传统酒水行业正面临数字化转型的迫切需求。为此,我们团队基于ThinkPHPMySQLUniApp技术栈,开发了一套榕壹云酒水定制系统,旨在通过数字化手段解决消费者个性化购…

GR00T N1:面向通用类人机器人的开放基础模型

摘要 通用型机器人需要具备多功能的身体和智能的大脑。近年来,类人机器人的发展在构建人类世界中的通用自主性硬件平台方面展现出巨大潜力。一个经过大量多样化数据源训练的机器人基础模型,对于使机器人能够推理新情况、稳健处理现实世界的多变性以及快…

WebRTC实时通话EasyRTC嵌入式音视频通信SDK,构建智慧医疗远程会诊高效方案

一、方案背景 当前医疗领域,医疗资源分布不均问题尤为突出,大城市和发达地区优质医疗资源集中,偏远地区医疗设施陈旧、人才稀缺,患者难以获得高质量的医疗服务,制约医疗事业均衡发展。 EasyRTC技术基于WebRTC等先进技…

深入理解主成分分析(PCA):原理、算法与应用

内容摘要 本文深入剖析主成分分析(PCA)技术。介绍其通过正交变换简化数据维度的核心原理,详细推导基于最小投影距离和最大投影方差的算法过程,总结算法流程步骤。全面分析PCA的优缺点,并对比其与KPCA的差异。同时阐述…

uniapp-商城-25-顶部模块高度计算

计算高度: 使用computed进行顶部模块的计算。 总高度:bartotalHeight log 介绍--收款码这一条目 也就是上一章节的title的高度计算 bodybarheight。 在该组件中: js部分的代码: 包含了导出的名字: shop-head…

【MCP】第一篇:MCP协议深度解析——大模型时代的“神经连接层“架构揭秘

【MCP】第一篇:MCP协议深度解析——大模型时代的"神经连接层"架构揭秘 一、什么是MCP?二、为什么需要MCP?三、MCP的架构四、MCP与AI交互的原理4.1 ReAct(Reasoning Acting)模式4.2 Function Calling 模式 五…

李飞飞团队新作WorldScore:“世界生成”能力迎来统一评测,3D/4D/视频模型同台PK

从古老神话中对世界起源的幻想,到如今科学家们在实验室里对虚拟世界的构建,人类探索世界生成奥秘的脚步从未停歇。如今,随着人工智能和计算机图形学的深度融合,我们已站在一个全新的起点,能够以前所未有的精度和效率去…

[react]Next.js之自适应布局和高清屏幕适配解决方案

序言 阅读前首先了解即将要用到的两个包的作用 1.postcss-pxtorem 自动将 CSS 中的 px 单位转换为 rem 单位按照设计稿尺寸直接写 px 值,由插件自动计算 rem 值 2.amfe-flexible 动态设置根元素的 font-size(即 1rem 的值)根据设备屏幕宽度和…

C# 如何比较两个List是否相等?

简介 在 C# 里&#xff0c;比较两个 List 是否相等&#xff0c;需要考虑多个方面&#xff0c;例如列表中的元素顺序、元素本身是否相等。下面介绍几种常见的比较方法&#xff1a; 基本类型比较&#xff08;元素顺序必须一致&#xff09; var list1 new List<int> { 1…

【技术派后端篇】Redis分布式锁:原理、实践与应用

在当今的高并发系统中&#xff0c;分布式锁是保障数据一致性和系统稳定性的重要手段。今天&#xff0c;我们就来深入探讨一下Redis分布式锁&#xff0c;揭开它神秘的面纱。 1 本地锁与分布式锁的区别 在Java开发的早期阶段&#xff0c;我们接触过synchronized和Lock锁&#x…

奥比中光tof相机开发学习笔记

针对奥比中光 tof相机&#xff0c;官方提供的资料如下ProcessOn Mindmap|思维导图 Orbbec SDK Python Wrapper基于Orbbec SDK进行设计封装&#xff0c;主要实现数据流接收&#xff0c;设备指令控制。下面就其开发适配进行如下总结&#xff1a; &#xff08;1&#xff09;系统配…

如何学习嵌入式

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难&#xff0c;但我还是想去做&#xff01; 本文写于&#xff1a;2025.04.16 请各位前辈能否给我提点建议&#xff0c;或者学习路线指导一下 STM32单片机学习总…

2025 年蓝桥杯 Java B 组真题解析分享

今年是我第二次参加蓝桥杯软件类Java B组的比赛&#xff0c;虽然赛前做了不少准备&#xff0c;但真正坐在考场上时&#xff0c;还是有种熟悉又紧张的感觉。蓝桥杯的题目一向以“基础创新”著称&#xff0c;今年也不例外&#xff0c;每道题都考验着我们对算法的理解、代码实现能…