03-浅谈监控与报警

前言

“报警”,“监控”都是一个大问题,并且搞很差还会有如下问题:数据库

  • 监控不到位,每每是被别人告知故障的发生;
  • 报警信息杂乱,产生免疫力;
  • 遇到验证故障时无处开刀;

So~, 带着上面的痛点咱们来解析下正确的监控报警的姿式。后端

一、基于用户监控

经过标题咱们也不难发现,监控的核心应该是基于用户的监控,还有另一种说话叫作“基于症状的监控”,同时还有另一种监控方式“基于缘由的监控”。咱们更加推荐基于用户监控,好比:做为你产品的用户不会去关心你的MySQL是不是健康的,而用户关心的是输出是否可以正常加载,功能是否正常使用。浏览器

一般用户关心问题老是少数的,如:缓存

  • 服务的可用性,没有500,没有缺乏Javascript或CSS或图像或视频,等或者其余影响用户体验的问题;
  • 是否是够快,网页加载慢如乌龟;
  • 功能,上线新的功能对用户的体验;
  • 安全性,好比你某某帐户中的资产;

数据库服务器和用户以前存在微妙的关系,但重要的区别是不可用用户数据不可用; 前者是近因,后者是症状。咱们不能老是的清楚区分这些东西,特别是咱们没有模仿用户的监控方式(黑盒监控);若是有条件咱们应该配备上。安全

基于缘由的警报很糟糕,但有时是必要的;可是,你可能会说,我知道没法访问的数据库服务器从而致使用户数据不行。不要紧。警告数据不可用和警告症状500、白盒指标,这里请注意并不是全部服务器都是从数据库中获取的客户。服务器

  • 不管如何,你将不得不抓住这个症状。也许它可能发生,由于网络断开或CPU争用,又或你没有的无数其余问题想到了。因此你必须抓住这个症状。
  • 一旦发现症状和缘由,就会有冗余警报; 这些须要单独调整,并致使重复或复杂的依赖规则;
  • 据称不可避免的结果并不是老是不可避免的:也许是你的数据库服务器不可用,由于您正在启动新实例或拒绝旧实例一。或者可能添加了一项功能来执行请求的快速故障转移,所以您不须要关心单个服务器的可用性。固然,你能够捕获全部这些状况随着规则愈来愈复杂,但为何要这么麻烦?

但有时他们是必要的。 (一般)没有“几乎”用完配额的症状或内存或磁盘I / O等,因此你想要规则知道你正走向悬崖。使用这些要谨慎;不要为你能够捕获的症状编写基于缘由的监控项规则。网络

1.1 故障

最佳的故障告警每每是来自客户端的信息,例如:负载均衡

  • 客户端能够看到重试的结果、客户端和服务器之间的网络延迟,以及与服务器相比能够更好地了解面向用户的延迟和错误;
  • 在许多状况下,客户端正在聚合响应来自许多后端,如缓存服务、数据库、权限服务,其余服务等;
  • 在许多状况下,客户端能够呈现比后端更简单的故障信息。对于例如:若是搜索分片服务器出现问题,数百个查询服务器,则每一个查询服务器也都有有限的警报源。

于许多服务而言,这意味着警告最前面的负载平衡器所看到的内容延迟,错误等;这样,也只能看到服务器损坏的结果把它交给用户;相反,经过客户端你看到的问题比你看到的更多。
从服务器来讲,若是他们所有关闭,或服务超时60s,或降低10%的链接,您的负载均衡器知道,但您的服务器可能不知道。工具

也须要注意,走得太远可能会引入超出控制问题。例如能够可靠地捕获用户看到的确切内容(例如,经过浏览器端),这很是棒!可是,信息充满噪音的(他们的ISP,浏览器)。调试

1.2 缘由规则

基于缘由的规则仍然有用。特别是,它们能够帮助您快速跳到已知的状态生产系统不足。

若是你在将症状绑定到缘由上得到了不少价值,推荐技巧:

  • 编写表示缘由的规则时,请检查症状是否正确也抓住了;
  • 每一个监控项中触发的全部基于缘由的规则的简要发出,能够快速浏览能够肯定他们刚刚得到的症状;
  • 删除或调整有噪声或持久性或其余低值的基于缘由的规则;

若是调试仪表板可让您从症状中快速移动到缘由改善,不管如何,你不须要花时间在基于缘由的规则上。

二、报警

不管如何,有一些须要尽快注意的警报,但如今不是;而是应该注意哪些紧急状态的。

推荐报警技巧:

  • 有警报打开错误能够解决很好,只要同一警报的屡次发出都能正确地链接成一个错误;若是没有对其分类和抑制该系统将失败;
  • 报警信息要对应到人,否则这就是垃圾信息;
  • 或许在有些时候,还须要报警升级的功能;

2.1 手册

手册是警报系统的重要组成部分; 最好有一个事件或者条目对于捕获症状的每一个警报或警报系列,能够进一步解释警报的内容手段以及如何解决。

通常来讲,若是你的手册有一个很长的详细流程图,这个记录可能出错的东西和修复它的时间太少 ,除非是根缘由彻底超出你的控制或从根本上须要人为干预。我见过的最好的手册有一些关于确切警报的注释意味着什么,以及目前有关警报的内容,大多数这样的笔记应该是短暂的,因此WIKI是一个很好的工具。

2.2 跟踪和完善

跟踪一个监控项和全部其余提醒:若是一个故障被发出,人们只是说“我看了,没有错“,那说明你须要删除监控规则,或降级或以其余方式收集数据。

创建一个系统(例如每周审查全部监控项和季度统计数据)能够帮助处理正在发生的事情的大局,并梳理丢失的故障信息。

相关文章
相关标签/搜索