当前位置:新闻中心行业动态 → 正文

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

责任编辑:editor004 作者: Beining |来源:企业网D1Net  2017-09-01 11:22:12 本文摘自:INFOQ

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

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

指标

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

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

输入指标对系统的入口进行度量,例如,用户请求数、请求的某个特征(资源/项目/产品)的数量,以及请求的来源、数据包大小等。 输出指标对系统的输出进行度量,例如,成功订单数、不成功订单数、大家关心的用户请求响应时间等。好的输出指标可以近似为每分钟系统赚取的利润。过程指标对系统内部操作进行度量,例如平均负载、可用内存、可用磁盘空间、可用inode数等,也可以对某个程序进行度量,例如某个API的重试次数等。

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

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

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

警报

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

作者对警报进行了分级:

SEV 1:故障如果不及时处理会严重影响业务连续性,造成大量利润损失或者违反法律法规 SEV 2:故障会影响业务,例如订单成功率下降10%,客户响应慢了10倍,导致部分员工不能工作等 SEV 3:故障导致系统出现严重问题,例如服务器严重过载,部分请求出现错误,但是不影响业务,输出看起来比较正常 SEV 4:故障导致了一些异常但不严重

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

SEV 1:呼叫整个团队,立即组织人马处理,开始公关,迅速debug,申请大量资金。这种情况下最好不需要大量人手处理 SEV 2:呼叫有权限和经验的相关人员,将debug作为最高优先事项 SEV 3:在Slack上记录或开工单,尽快解决问题 SEV 4:除非资源足够否则不干预,更多关注的是导致这种事件的数量、频率等指标:这些深层次问题可以成为SEV 3事件

总结

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

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

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

指标干净,不会被随机噪声淹没。在更长的时间内进行平均处理有可能可以降低噪声,也可以动态修改平均值; 影响显著,不能由噪音引起; 必须人为干预才能恢复,对于短时间自动恢复的问题不需要呼叫人员; 和故障强相关的时序指标,例如,MySQL的历史列表不断加长在几个小时后几乎一定会演变为故障。指标与故障的相关性必须极强,以免造成告警疲劳。在SEV 2 的情况下,如果故障概率是50%而工程师在睡觉,那么可以等到故障发生时再进行呼叫。

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

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

关键字:指标分布式系统

本文摘自:INFOQ

x 如何理解分布式系统的指标和警报 扫一扫
分享本文到朋友圈
当前位置:新闻中心行业动态 → 正文

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

责任编辑:editor004 作者: Beining |来源:企业网D1Net  2017-09-01 11:22:12 本文摘自:INFOQ

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

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

指标

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

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

输入指标对系统的入口进行度量,例如,用户请求数、请求的某个特征(资源/项目/产品)的数量,以及请求的来源、数据包大小等。 输出指标对系统的输出进行度量,例如,成功订单数、不成功订单数、大家关心的用户请求响应时间等。好的输出指标可以近似为每分钟系统赚取的利润。过程指标对系统内部操作进行度量,例如平均负载、可用内存、可用磁盘空间、可用inode数等,也可以对某个程序进行度量,例如某个API的重试次数等。

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

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

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

警报

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

作者对警报进行了分级:

SEV 1:故障如果不及时处理会严重影响业务连续性,造成大量利润损失或者违反法律法规 SEV 2:故障会影响业务,例如订单成功率下降10%,客户响应慢了10倍,导致部分员工不能工作等 SEV 3:故障导致系统出现严重问题,例如服务器严重过载,部分请求出现错误,但是不影响业务,输出看起来比较正常 SEV 4:故障导致了一些异常但不严重

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

SEV 1:呼叫整个团队,立即组织人马处理,开始公关,迅速debug,申请大量资金。这种情况下最好不需要大量人手处理 SEV 2:呼叫有权限和经验的相关人员,将debug作为最高优先事项 SEV 3:在Slack上记录或开工单,尽快解决问题 SEV 4:除非资源足够否则不干预,更多关注的是导致这种事件的数量、频率等指标:这些深层次问题可以成为SEV 3事件

总结

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

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

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

指标干净,不会被随机噪声淹没。在更长的时间内进行平均处理有可能可以降低噪声,也可以动态修改平均值; 影响显著,不能由噪音引起; 必须人为干预才能恢复,对于短时间自动恢复的问题不需要呼叫人员; 和故障强相关的时序指标,例如,MySQL的历史列表不断加长在几个小时后几乎一定会演变为故障。指标与故障的相关性必须极强,以免造成告警疲劳。在SEV 2 的情况下,如果故障概率是50%而工程师在睡觉,那么可以等到故障发生时再进行呼叫。

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

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

关键字:指标分布式系统

本文摘自:INFOQ

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^