监控系统的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

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Prometheus是一个开源的指标监控系统和时间序列数据库。它专注于收集和存储系统和应用程序的度量指标数据,并提供强大的查询和可视化功能。Prometheus使用拉取模型,通过定期从目标系统中获取度量指标数据,支持多种数据格式和协议。 Grafana是一个开源的数据可视化和监控平台,可以与Prometheus集成使用。Grafana提供了丰富的数据可视化功能,可以根据收集到的指标数据创建仪表盘、图表和警报等。用户可以通过Grafana直观地查看和分析Prometheus收集的数据,并根据需要进行自定义配置。 在安装和配置Prometheus和Grafana时,可以按照以下步骤进行操作: 1. 首先,安装并配置Prometheus,可以参考Prometheus官方文档提供的安装指南。 2. 然后,在Prometheus的配置文件中添加需要监控的目标系统和相关的度量指标。 3. 启动Prometheus服务,并确保它能够成功收集和存储度量指标数据。 4. 接下来,安装并配置Grafana,可以参考Grafana官方文档提供的安装指南。 5. 将Prometheus配置为Grafana的数据源,以便Grafana可以访问Prometheus收集的数据。 6. 在Grafana中创建仪表盘,配置需要展示的指标数据和图表形式。 7. 最后,通过Grafana的用户界面查看和分析Prometheus收集的指标数据,并设置警报规则等。 通过将Prometheus和Grafana结合使用,您可以构建一个强大的开源指标监控系统,以监控和可视化系统和应用程序的关键指标数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Prometheus+Grafana监控系统](https://blog.csdn.net/Wemesun/article/details/126455053)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值