监控系统的4个黄金指标

最近被问到一个问题,是关于监控系统的4个黄金信号(也被称为黄金指标)的,不太记得了,看了一些资料,做个笔记。

来源

监控系统的4个黄金指标来源于《SRE:Google运维解密》这本书的第六章 分布式系统的监控。

这一章讲了为什么要监控,黑盒监控与白盒监控,4个黄金指标,长尾问题,度量指标时应该采用合适的精度以及监控系统的长期维护这些问题,基本上构建一个监控系统比较重要的几个方面都有讲到。

这本书是我上班的第二年领导推荐给我看的,是一本很好的书,时间很久了,内容忘了很多,这两天在重新读。

四个黄金指标是什么

这四个黄金指标分别是:

  • 延迟(Latency)
    延迟是指请求从发出到接收响应所花费的时间。这个信号不仅包括成功请求的响应时间,还应该包括失败请求的响应时间。

  • 流量(Traffic)
    流量是指系统接收到的请求数量或处理的数据量。流量通常以每秒请求数(QPS)或每秒事务数(TPS)来测量。

  • 错误(Errors)
    错误是指请求未能成功处理的次数或比率。错误可以是 HTTP 状态码 500 系列、应用程序异常或其他失败条件。

  • 饱和度(Saturation)
    饱和度是指系统资源的使用情况及其接近极限的程度。资源包括 CPU、内存、磁盘 I/O、网络带宽等。一般可以使用利用率或者剩余率来表示。

应用这四个指标时需要注意的内容

  1. 延迟

    • 监控 P50、P95、P99 等不同百分位数的延迟,以更全面了解系统性能。
    • 应当区分成功请求和失败请求的延迟,以便更准确地诊断问题。
    • 关注不同时间段的延迟变化,比如高峰时间和非高峰时间。
    • 针对重要的API和服务应该创建特别的dashboard和告警规则。
  2. 流量

    • 监控每秒请求数及其变化趋势,了解系统负载情况。
    • 监控数据吞吐量,比如每秒处理的字节数。
    • 结合业务指标(如活跃用户数、交易量、artifacts下载次数等),更好地理解流量与业务活动之间的关系。
  3. 错误

    • 要分别监控总体错误率和特定类型错误率(如 4xx、5xx 错误)。
    • 监控错误随时间的变化情况,发现异常波动。
    • 必要的时候结合应用日志和LB日志,追踪和诊断错误的根本原因。
  4. 饱和度

    • 监控 CPU 使用率、内存使用率、磁盘 I/O 使用率、网络带宽使用率等关键资源。
    • 设置警报阈值,及时预警资源的过度使用。
    • 监控系统资源的使用趋势,提前进行容量规划。

关注指标的分布而不是平均值

关注监控指标的分布而不是单纯的平均值,这是因为平均值往往不能全面反映系统的实际性能和用户体验,特别是在存在高可变性或异常的情况下。

主要有以下几个原因:

  1. 平均值掩盖了重要细节

    平均值是所有数据点的中心趋势,但它无法反映数据的分布情况。以下几个方面说明了平均值的局限性:

    • 忽略波动性:平均值不能反映数据的波动性。例如,一个系统的响应时间如果大部分时间很快但偶尔非常慢,平均响应时间可能看起来不错,但用户实际体验可能很糟糕。
    • 掩盖异常:如果有一些极端值(outliers),它们可能极大地拉高或降低平均值,从而掩盖了大多数数据点的实际情况。
  2. 分布提供了更全面的视角

    关注监控指标的分布可以帮助我们更全面地理解系统的性能和行为:

    • 百分位数(Percentiles):通过查看不同的百分位数(如P50、P90、P95、P99),可以更好地了解大多数用户的实际体验。例如,P90表示90%的请求比这个值快,而10%比这个值慢。P99表示99%的请求比这个值快,1%比这个值慢。
    • 直方图和分位图:这些图表可以展示数据的分布情况,帮助识别性能瓶颈和异常值。例如,Prometheus 支持使用直方图和摘要(Histogram and Summary)来记录和展示数据的分布。
  3. 举例说明

    响应时间:假设一个 web 服务的响应时间如下(单位:毫秒):

    • 50, 50, 50, 50, 50, 500

    计算平均值: (50 + 50 + 50 + 50 + 50 + 500) / 6 = 125 ms

    从平均值来看,响应时间似乎是 125 ms。但实际上,大部分请求的响应时间是 50 ms,只有一个请求是 500 ms。这很可能导致用户体验极差。

    如果我们查看百分位数:

    • P50(中位数):50 ms
    • P90:50 ms
    • P95:50 ms
    • P99:500 ms

    从这些百分位数,我们可以看到绝大多数请求的响应时间是 50 ms,只有少数请求非常慢。

  4. 实践中的工具和方法

    在实践中,使用适当的工具和方法可以帮助我们更好地分析监控指标的分布:

    • Prometheus:支持Histogram和Summary类型,可以用来记录和分析时间序列数据的分布。例如,Summary可以在PromQL中进行百分位数查询:

        histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))
      
    • Grafana:与Prometheus结合,Grafana可以用于可视化不同百分位数、呈现直方图和分位图等。例如,使用Prometheus数据源绘制延迟的百分位图:

        quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))
      

同步发布在我的个人博客上:https://panzhixiang.cn

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

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

相关文章

面试题3:GET 和 POST 有什么区别?

[!]高频面试题。 GET 和 POST 没有本质区别,可以进行相互代替。 1、GET语义:“从服务器获取数据”;POST语义:“往服务器上提交数据”。[设计初衷,不一定要遵守] 2、发请求时,给服务器传递的数据&#xff…

通用大模型VS垂直大模型:你更青睐哪一方?

目录 引言 背景介绍 国内外垂直大模型的发展情况 国内外通用大模型的发展情况 哪一路径更为火热? 能力分析 通用大模型的独特能力 垂直大模型的独特能力 两者的差异与互补 难点探究 算力的挑战 数据的挑战 算法的挑战 结论 表格总结 引言 AI大模型的战…

CMake 详解

CMake 说明 cmake的定义是什么 ?-----高级编译配置工具 当多个人用不同的语言或者编译器开发一个项目,最终要输出一个可执行文件或者共享库(dll,so等等)这时候神器就出现了-----CMake! 所有操作都是通过…

Qt封装号的数据库操作类

连接QMYSQL&#xff0c;包含断线重连 头文件&#xff08;xxx.h&#xff09; #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QThread.h> #include <QQueue> #include <QMutex> #include <QSqlDatabase> #include …

用一个实例看如何分享大量照片 续篇一

继续上篇的实例分享&#xff0c;在此罗列一些应该注意的细节&#xff0c;以便在下次可以更加省时省力。 最重要的是呈现构想&#xff0c;如按活动/主题、班级/板块、地区/国家等等&#xff0c;这些都应该事先计划好&#xff0c;事后改动工作量巨大&#xff0c;因为太容易出错&a…

中东文明史

转自&#xff1a;想要了解完整的中东文明史&#xff1f;这篇文章成全你 - 知乎 (zhihu.com) 写在前面 中东文明是人类历史上最古老的文明。人类祖先从东非大裂谷走出之后&#xff0c;首先选择定居在中东地区的新月沃土上&#xff0c;并建立了人类历史上有文字记载的第一个文明…

java课程设计GUI学生信息管理系统

目录 系统内容.. 3 用户界面模块... 4 数据存储模块... 4 信息管理模块... 4 管理模块.. 4 主要模块的算法描述... 4 –简要的语言描述... 4 运行及调试分析&#xff08;测试数据及测试结果&#xff09;.. 5 课程设计总结... 7 参考文献&#xff08;至少三个&#xf…

大林 PID 算法

Dahlin PID算法是一种用于控制和调节系统的比例积分延迟算法。以下是一个简单的C语言实现示例&#xff1a; #include <stdio.h>// DALIN PID 结构体定义 typedef struct {float SetPoint; // 设定点float Proportion; // 比例float Integral; // 积分float Derivativ…

vite:配置打包后js的文件名,解决更新后浏览器缓存问题(了解浏览器的强缓存与协商缓存)

目录 第一章 简单理解浏览器的缓存机制 1.1 什么是缓存 1.2 强缓存 1.3 协商缓存 第二章 配置输出js文件名 2.1 原因 2.2 配置代码 第一章 简单理解浏览器的缓存机制 1.1 什么是缓存 当我们第一次访问网站的时候&#xff0c;我们的电脑会把网站上的图片和数据下载到电…

如何优雅地使用 console.log 打印数组或对象

一、背景 使用 console.log 在控制台中打印数组或者对象时&#xff0c;很多时候它们的字段都是默认关闭的&#xff0c;需要手动一个个的点开&#xff0c;非常不直观且麻烦。 二、解决方案 使用 JSON.stringify() 的第三个参数 我们来看一下官方对于 JSON.stringify 的介绍 三、…

Gitee 的公钥删不掉

公钥管理里已经没有公钥了&#xff0c; 仓库里还有&#xff0c;这是怎么回事&#xff1f; 这两个好像又没什么关系。 那为啥要搞两处呢&#xff1f; 个人信息里的公钥一直就没有仓库里使用的公钥&#xff0c; 删掉个人信息里的也没什么影响。 在仓库管理页面导入新公钥提示已…

AI 大模型企业应用实战(06)-初识LangChain

LLM大模型与AI应用的粘合剂。 1 langchain是什么以及发展过程 LangChain是一个开源框架&#xff0c;旨在简化使用大型语言模型构建端到端应用程序的过程&#xff0c;也是ReAct(reasonact)论文的落地实现。 2022年10月25日开源 54K star 种子轮一周1000万美金&#xff0c;A轮2…

解决vscode运行js时突然报错

1. 问题背景 创建JavaScript文件运行&#xff0c;弹出错误&#xff1a;Can’t find Node.js binary “node”: path does not exist. Make sure Node.js is installed and in your PATH, or set the “runtimeExecutable” in your launch.json 这是由于没有配置好setting.js…

C语言入门系列:从内存原理看函数的值传递和引用传递

文章目录 一&#xff0c;值传递二&#xff0c;引用传递三&#xff0c;从内存原理看值传递和引用传递的区别1 值传递内存示意图2 引用传递内存示意图 参考文献 函数参数用于向函数传递数据&#xff0c;C语言支持两种传递方式&#xff1a;值传递和引用传递。 一&#xff0c;值传递…

工程文档CAD转换必备!在 Java 中将 DWG 转换为 JPG

Aspose.CAD 是一个独立的类库&#xff0c;以加强Java应用程序处理和渲染CAD图纸&#xff0c;而不需要AutoCAD或任何其他渲染工作流程。该CAD类库允许将DWG, DWT, DWF, DWFX, IFC, PLT, DGN, OBJ, STL, IGES, CFF2文件、布局和图层高质量地转换为PDF和光栅图像格式。 Aspose AP…

Synchronized、volatile与ReentrantLock:比较这些同步机制在Java并发编程中的应用和区别

在Java并发编程中&#xff0c;确保多个线程安全地访问共享资源是至关重要的。为实现这一目标&#xff0c;Java提供了多种同步机制&#xff0c;其中synchronized、volatile和ReentrantLock是最常用的几种。下面&#xff0c;我们将从技术难点、面试官关注点、回答吸引力以及代码举…

如何用家政服务小程序源码系统 快速搭建家政自己接单的软件?

随着移动互联网的快速发展&#xff0c;线上预约服务已成为家政行业的新趋势。然而&#xff0c;许多家政企业面临着信息不透明、服务质量参差不齐、管理效率低下等问题。家政服务小程序系统&#xff0c;可以帮助商家快速搭建自己的接单软件&#xff0c;提升服务效率&#xff0c;…

嵌入式学习——Linux操作系统——文件编程练习

1.使用fread和fwrite方式完成任意普通文件的拷贝功能。 模拟 文件下载 #include <stdio.h>void do_copy(FILE *fp_s,FILE *fp_d) {char buf[100] {0};int ret;while (ret fread(buf,sizeof(char),sizeof(buf),fp_s))fwrite(buf,sizeof(char),ret,fp_d); }//./a.out sr…

开源网安参编的《代码大模型安全风险防范能力要求及评估方法》发布

​代码大模型在代码生成、代码翻译、代码补全、错误定位与修复、自动化测试等方面为研发人员带来了极大便利的同时&#xff0c;也带来了对安全风险防范能力的挑战。基于此&#xff0c;中国信通院依托中国人工智能产业发展联盟&#xff08;AIIA&#xff09;&#xff0c;联合开源…

深圳比创达|EMC电磁兼容性行业:电子设备质量的“守门员”

随着科技的不断进步和电子产品的普及&#xff0c;电磁兼容性&#xff08;EMC&#xff09;问题愈发受到行业内外的高度关注。EMC作为衡量电子设备在电磁环境中能否正常工作的重要指标&#xff0c;对于保障设备稳定运行、减少电磁干扰、提升产品质量具有重要意义。 一、EMC电磁兼…