[关闭]
@cnbeining 2017-08-31T15:21:04.000000Z 字数 1814 阅读 1104

如何理解分布式系统的指标和警报

DevOps


note: 作者太难找 我把稿子洗了一下 理论上不会有很大的版权问题 当然有点缺德 如果拿到版权就洗回去 拿不到就这么发吧


摘要: 分布式系统的指标和警报允许运维人员检测分布式系统的故障,并帮助他们快速诊断出错位置。John Corrigan在他的文章中对分布式系统的指标和警报进行了提纲挈领的分析。

作者John Corrigan

正文

John Corrigan在他的文章中对分布式系统的指标和警报进行了提纲挈领的分析。

分布式系统的指标和警报允许运维人员检测分布式系统的故障,并帮助他们快速诊断出错位置。

指标

指标是按特定时间间隔收集的系统信息;指标存储后可以进一步处理,例如进行可视化或触发警报等。

作者认为,指标可以分为3类:输入指标、输出指标和过程指标。

作者指出,有时指标间没有明确的界限:以HTTP代码为例,2xx和5xx代码是输出指标,4xx一般是输入指标,但是如果错误是对之前请求的数据进行操作后造成的,也可以当做输出指标。3xx的类别完全取决于应用程序。在多个模块、组件、服务等组成的大型系统中,每个模块都可以有自己的3种指标。

作者认为,各个指标的用途不同:输出指标代表问题是否存在以及确定问题的严重程度;输入指标可以指出问题的位置是本系统还是上游系统;一旦确定故障点,可以通过过程指标深入了解问题。

作者强调,所有的指标都应该定期汇总,而且应当可以快速反映问题。好的指标在运行正常时不会出现波动,在出现问题时应反应灵敏。

警报

如果出现故障,系统应该报警:某个指标出现了异常的变化。

作者对警报进行了分级:

作者认为,对警报相对应的反应是:

总结

作者总结道,整个系统需要至少一个输出指标,最好是每分钟赚取利润的近似值:例如,每分钟投放的广告、每分钟的页面展示数、每分钟的流量、每小时上传的图片等。在响应中包含用时也是好办法。

作者对数据的理解是:对于汇总指标,例如某些值的总和或平均值以及客户请求的平均延迟,应该生成数个指标。记得要记录指标包含的数据点数量,也可以考虑包括分位数(p0、p25、p50、p75、p90、p99和p100等)。有时,众数和中位数也有用。如果输入值呈正态分布,指标应包括标准差。

作者指出,对于SEV 1和SEV 2事件应当提供可预见的警报:

作者提醒,如果某台主机出现负载、CPU占用、磁盘空间、内存空间等指标报警,考虑是否出现架构弱点:不要为此设置警报,在此之前就把冗余和灾备做好。

查看英文原文Operational Metrics and Alerts for Distributed Software Systems

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注