“报警”,“监控”都是一个大问题,并且搞很差还会有如下问题:数据库
So~, 带着上面的痛点咱们来解析下正确的监控和报警的姿式。后端
经过标题咱们也不难发现,监控的核心应该是基于用户的监控,还有另一种说话叫作“基于症状的监控”,同时还有另一种监控方式“基于缘由的监控”。咱们更加推荐基于用户监控,好比:做为你产品的用户不会去关心你的MySQL是不是健康的,而用户关心的是输出是否可以正常加载,功能是否正常使用。浏览器
一般用户关心问题老是少数的,如:缓存
数据库服务器和用户以前存在微妙的关系,但重要的区别是不可用
和用户数据不可用
; 前者是近因,后者是症状。咱们不能老是的清楚区分这些东西,特别是咱们没有模仿用户的监控方式(黑盒监控);若是有条件咱们应该配备上。安全
基于缘由的警报很糟糕,但有时是必要的;可是,你可能会说,我知道没法访问的数据库服务器从而致使用户数据不行。不要紧。警告数据不可用和警告症状500、白盒指标,这里请注意并不是全部服务器都是从数据库中获取的客户。服务器
但有时他们是必要的。 (一般)没有“几乎”用完配额的症状或内存或磁盘I / O等,因此你想要规则知道你正走向悬崖。使用这些要谨慎;不要为你能够捕获的症状编写基于缘由的监控项规则。网络
最佳的故障告警每每是来自客户端的信息,例如:负载均衡
于许多服务而言,这意味着警告最前面的负载平衡器所看到的内容延迟,错误等;这样,也只能看到服务器损坏的结果把它交给用户;相反,经过客户端你看到的问题比你看到的更多。
从服务器来讲,若是他们所有关闭,或服务超时60s,或降低10%的链接,您的负载均衡器知道,但您的服务器可能不知道。工具
也须要注意,走得太远可能会引入超出控制问题。例如能够可靠地捕获用户看到的确切内容(例如,经过浏览器端),这很是棒!可是,信息充满噪音的(他们的ISP,浏览器)。调试
基于缘由的规则仍然有用。特别是,它们能够帮助您快速跳到已知的状态生产系统不足。
若是你在将症状绑定到缘由上得到了不少价值,推荐技巧:
若是调试仪表板可让您从症状中快速移动到缘由改善,不管如何,你不须要花时间在基于缘由的规则上。
不管如何,有一些须要尽快注意的警报,但如今不是;而是应该注意哪些紧急状态的。
推荐报警技巧:
手册是警报系统的重要组成部分; 最好有一个事件或者条目对于捕获症状的每一个警报或警报系列,能够进一步解释警报的内容手段以及如何解决。
通常来讲,若是你的手册有一个很长的详细流程图,这个记录可能出错的东西和修复它的时间太少 ,除非是根缘由彻底超出你的控制或从根本上须要人为干预。我见过的最好的手册有一些关于确切警报的注释意味着什么,以及目前有关警报的内容,大多数这样的笔记应该是短暂的,因此WIKI是一个很好的工具。
跟踪一个监控项和全部其余提醒:若是一个故障被发出,人们只是说“我看了,没有错“,那说明你须要删除监控规则,或降级或以其余方式收集数据。
创建一个系统(例如每周审查全部监控项和季度统计数据)能够帮助处理正在发生的事情的大局,并梳理丢失的故障信息。