【监控】Prometheus+Grafana 构建可视化监控

在云原生和微服务架构盛行的今天,监控系统已成为保障业务稳定性的核心基础设施。作为监控领域的标杆工具,PrometheusGrafana凭借其高效的数据采集、灵活的可视化能力,成为运维和开发团队的“标配”。


一、Prometheus

Prometheus诞生于2012年,由SoundCloud开发并捐赠给CNCF基金会,现已成为继Kubernetes之后最受欢迎的云原生项目之一。

1. 核心特性
  • 多维数据模型:通过<metric name>{<label1>=<value1>, ...}的格式记录数据,支持按标签动态分类(如区分不同服务的HTTP请求延迟)。
  • PromQL查询语言:提供强大的时间序列数据分析能力,例如计算CPU使用率的滑动平均值:
avg_over_time(node_cpu_seconds_total{mode="idle"}[5m])
  • Pull/Push混合模式:默认通过HTTP主动拉取目标数据,同时支持通过Pushgateway接收短期任务推送的指标。
  • 分布式高可用:支持联邦集群架构,实现跨数据中心的数据聚合。
2. 架构组件
体系结构

下图说明了Prometheus的体系结构及其某些生态系统组件:

Prometheus体系涉及的组件

  • Prometheus server - 收集和存储时间序列数据
  • Client Library: 客户端库,为需要监控的服务生成相应的
  • metrics 并暴露给 - Prometheus server。当 Prometheus server 来 pull 时,直接返回实时状态的 metrics。
  • pushgateway - 对于短暂运行的任务,负责接收和缓存时间序列数据,同时也是一个数据源
  • exporter - 各种专用exporter,面向硬件、存储、数据库、HTTP服务等
  • alertmanager - 处理报警
  • webUI等,其他各种支持的工具,本身的界面值适合用来语句查询,数据可视化,需要第三方组件,比如Grafana。

3.如何收集度量值

度量指标由监控系统执行的过程通常可以分为两种方法:推和拉。

Prometheus基于HTTP call,从配置文件中指定的网络端点(endpoint)上周期性获取指标数据。

Prometheus支持通过三种类型的途径从目标上“抓取(Serape)”指标数据:

Exporters:被监控的目标不支持pro的数据格式,通过exporters抽取指标数据,进行格式化处理成pro兼容的数据格式,再响应给pro server。

Instrumentation:应用系统内建了pro兼容的指标数据格式,pro server可以直接采集。

Push gateway:pro采用 pull 模式,可能由于不在一个子网或者防火墙原因,导致 Prometheus 无法直接拉取各个 target 数据。在监控业务数据的时候,需要将不同数据汇总, 由 Prometheus 统一收集。暂存在pushgateway,等待Prometheus server拉取。

二、Grafana

Grafana作为开源可视化领域的“瑞士军刀”,能够将Prometheus的原始数据转化为直观的运维仪表盘。

1. 核心优势
  • 多数据源支持:无缝集成Prometheus、Loki、InfluxDB、Elasticsearch等30+数据源。
  • 动态仪表盘:提供折线图、热力图、统计面板等10+图表类型,支持通过变量实现交互式过滤(如按环境/服务筛选)。
  • 告警可视化:可在图表中直接标注阈值告警点,并结合Alertmanager实现分级通知。
  • 模板生态:官方市场提供1.5万+预置模板,例如:
    • 主机监控模板(ID: 8919)
    • MySQL性能分析模板(ID: 11329)
    • Kubernetes集群监控模板(ID: 315)
2. 高级功能
  • 混合数据源:在同一面板中对比不同系统的数据(如同时展示Prometheus的CPU指标和Elasticsearch的日志量)。
  • 权限管控:支持基于角色的访问控制(RBAC),细化到仪表盘级别的权限管理。

三、协同工作流

  1. 数据采集
    Node Exporter采集主机CPU/内存指标,cAdvisor收集容器资源使用情况,应用通过Client Library暴露自定义指标(如Spring Boot的HTTP请求数)。
  2. 存储分析
    Prometheus每15秒拉取一次数据,存储至TSDB,并通过PromQL实现实时分析。例如检测内存泄漏:
increase(container_memory_usage_bytes{container="app"}[1h]) > 1GB
  1. 可视化展示
    在Grafana中创建仪表盘,组合多个图表形成监控全景(图2)。例如:
    • 实时显示服务的QPS、错误率、响应时间百分位数
    • 通过GeoMap插件展示全球用户的访问延迟分布
  2. 智能告警
    当Prometheus检测到指标异常(如错误率>5%持续5分钟),Alertmanager会触发Grafana通知,并自动生成事件时间线供事后分析。

四、典型应用场景
  1. 基础设施监控
    通过Node Exporter+主机模板(图3),实时跟踪服务器CPU/磁盘/网络状态,预测硬件故障。
  2. 微服务观测
    结合Istio等服务网格,监控服务间调用的黄金指标(吞吐量、错误率、饱和度)。
  3. CI/CD健康度
    分析流水线的构建时长、失败原因,优化Jenkins任务调度策略。
  4. 业务指标可视化
    将订单成交量、用户活跃度等业务指标接入,实现技术与业务数据的联动分析。

五、最佳实践
  1. 指标设计规范
    • 遵循<service>_<metric>_<unit>命名规则(如http_requests_total
    • 避免高基数标签(如用户ID会导致时序爆炸)
  2. 性能优化
    • 设置合理的抓取间隔(生产环境建议30-60秒)
    • 使用Recording Rules预计算常用查询
  3. 可视化策略
    • 关键指标采用红/黄/绿状态标识
    • 在仪表盘顶部放置全局过滤器(如环境/数据中心)

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

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

相关文章

替代 WPS 的新思路?快速将 Word 转为图片 PDF

在这个数字化办公日益普及的时代&#xff0c;越来越多的人开始关注文档处理工具的功能与体验。当我们习惯了某些便捷操作时&#xff0c;却发现一些常用功能正逐渐变为付费项目——比如 WPS 中的一项实用功能也开始收费了。 这款工具最特别的地方在于&#xff0c;可以直接把 W…

CodeTop之数组中的第K个最大的元素

题目链接 215. 数组中的第K个最大元素 - 力扣&#xff08;LeetCode&#xff09; 题目解析 算法原理 解法一: 直接理由java内部的排序函数,Arrays.sort()进行排序, 然后我们直接返回第k个最大的元素 nums[nums.length-k] 解法二: 使用堆 我们先把所有元素丢到大根堆里面…

AI任务相关解决方案1-基于NLP的3种模型实现实体识别,以及对比分析(包括基于规则的方法、CRF模型和BERT微调模型)

大家好,我是微学AI,今天给大家介绍一下AI任务相关解决方案1-基于NLP的3种模型实现实体识别,以及对比分析。本文将深入探讨三种不同的命名实体识别(NER)方法,包括基于规则的方法、CRF模型和BERT微调模型,用于识别文本中的地名(LOC)、机构名称(ORG)和人名(PER)实体。通过系统…

IP动态伪装开关

IP动态伪装开关 在OpenWrt系统中&#xff0c;IP动态伪装&#xff08;IP Masquerading&#xff09;是一种网络地址转换&#xff08;NAT&#xff09;技术&#xff0c;用于在私有网络和公共网络之间转换IP地址。它通常用于允许多个设备共享单个公共IP地址访问互联网。以下是关于O…

【MySQL】第10节|MySQL全局优化与Mysql 8.0新增特性详解

全局优化 mysql server参数 1. max_connections&#xff08;最大连接数&#xff09; 含义&#xff1a;MySQL 服务允许的最大并发连接数&#xff08;包括正在使用和空闲的连接&#xff09;。超过此限制时&#xff0c;新连接会被拒绝&#xff08;报错 Too many connections&am…

VS Code 插件 Git History Diff

插件名 进命令行&#xff0c;进Git自己那个分支 查看分支 提交到Git的后想再把另一个也提交到那个分支&#xff0c;用这个命令

Shell脚本中的常用命令

一.设置主机名称 文件设置 文件开机时已读取所以要重新进入 命令更改&#xff08;即使生效&#xff09; 二.网络管理命令 1.查看网卡命令 设置网卡 1&#xff09;DHCP工作模式 2)静态IP 3&#xff09;修改网卡信息 三.简单处理字符 1.打印连续数字 连续打印3个数字 指定打…

C++ 中 std::wstring::c_str() 的潜在风险与安全使用指南

一、问题背景 在开发过程中&#xff0c;我们经常会遇到不同接口之间的数据传递问题。例如&#xff0c;当调用某个接口时&#xff0c;需要传入一个字符串指针作为数据接收的缓冲区&#xff0c;但外围接口使用的是 std::wstring 类型。此时&#xff0c;如果直接将 std::wstring:…

‘js@https://registry.npmmirror.com/JS/-/JS-0.1.0.tgz‘ is not in this registry

解决方法&#xff1a; 1. npm cache clean --force 2.临时切换到官方源 npm config set registry https://registry.npmjs.org/ npm install js0.1.0 npm config set registry https://registry.npmmirror.com/ # 切换回镜像源

ubuntu24 安装MongoDB-6.0.24 数据库操作步骤和配置参数说明

目录 1 下载MongoDB软件 2 操作系统信息 3 MongoDB 软件安装步骤 4 编写mongodb的配置文件 5 生成keyfile 6 使用mongo用户启动mongodb服务 7 设置开机启动(mongo用户) 8 安装MongoDB shell&#xff0c;因为MongoDB-6.0.24 已经移除mongo命令 1 下载MongoDB软件 https:…

单片机——keil5

文章目录 安装教程使用介绍案例展示 接下来进行keil5软件的相关学习使用 安装教程 参考视频链接bilibili 51单片机 大约在8分钟位置处 使用介绍 首先新建project选择对应的芯片型号&#xff08;例如&#xff1a;STC89C52 —— 由于STC系列是国产&#xff0c;keil5软件不支持…

计算机网络相关发展以及常见性能指标

目录 一、因特网概述 1.1 基本概念 1.2 因特网发展的三个阶段 1.3 英特网服务提供者ISP 1.4 英特网的标准化工作 1.5 因特网的组成 1.6 简单总结 二、3种交换方式 2.1 电路交换&#xff08;Circuit Switching&#xff09; 2.2 分组交换&#xff08;Packet Switching&…

Java 面试实录:从Spring到微服务的技术探讨

在一个明亮的会议室里&#xff0c;严肃的面试官与搞笑的程序员谢飞机正进行一场关于Java技术栈的面试。场景设定在一家知名互联网大厂&#xff0c;他们的对话充满了技术性与娱乐性。 第一轮&#xff1a;Spring框架与数据库 面试官&#xff1a;“谢飞机&#xff0c;能解释一下…

OpenCV CUDA模块图像过滤------创建一个 Scharr 滤波器函数createScharrFilter()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数用于创建一个 Scharr 滤波器&#xff08;基于 CUDA 加速&#xff09;&#xff0c;用于图像的一阶导数计算。它常用于边缘检测任务中&#…

yolov8分割任务的推理和后处理解析

文章目录 一、前言二、分割模型的前向推理1. 检测结果&#xff1a;来自Detect类的输出2. 分割结果&#xff08;最终&#xff09;3. 与Detect的主要区别4. 工作流程 三、后处理1. 非极大值抑制&#xff08;NMS&#xff09;过滤检测框2. 分割原型&#xff08;Mask Prototypes&…

4.1.1 Spark SQL概述

Spark SQL是Apache Spark的一个模块&#xff0c;专门用于处理结构化数据。它引入了DataFrame这一编程抽象&#xff0c;DataFrame是带有Schema信息的分布式数据集合&#xff0c;类似于关系型数据库中的表。用户可以通过SQL、DataFrames API和Datasets API三种方式操作结构化数据…

华为OD机试真题——书籍叠放(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 200分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

尚硅谷redis7 63-69 redis哨兵监控之理论简介

63 redis哨兵监控之理论简介 什么是哨兵 master挂了如何办?从机原地待命。此时数据只能读取不能更新。因此需要&#xff1a; 吹哨人巡查监控后台master主机是否故障,如果故障了根据投票数自动将某一个从库转换为新主库, 哨兵的作用 1、监控redis运行状态,包括master和slave…

word文档格式规范(论文格式规范、word格式、论文格式、文章格式、格式prompt)

文章目录 prompt prompt [格式要求] - 字体&#xff1a;中文宋体小四&#xff1b;英文Times New Roman 12pt&#xff1b;标题黑体 - 行距&#xff1a;1.5倍&#xff08;段前段后0行&#xff09; - 边距&#xff1a;A4默认&#xff08;上下2.54cm&#xff0c;左右3.17cm&…

SpringBoot+tabula+pdfbox解析pdf中的段落和表格数据

一、前言 在日常业务需求中&#xff0c;往往会遇到解析pdf文件中的段落或者表格数据的需求。 常见的做法是使用 pdfbox 来做&#xff0c;但是它只能提取文本数据&#xff0c;没有我们在文件页面上面的那种结构化组织&#xff0c;文本通常是散乱的包含各种换行回车空格等格式&a…