什么是监控告警系统
监控告警系统是一个软件系统,给用户提供监控、告警、通知的功能。可以用下图简单的描述
监控
监控系统采集并存储监控对象的一个或者多个指标。这里提到了几个名词,稍加解释:
监控系统:对下采集一个或者多个监控对象的指标数据并存储,对上暴露接口供上层做应用图形化展示、告警评估、报表;
监控对象:在互联网和软件行业,可能是服务器、虚拟机等基础设施,也可能是apiserver、消息队列、数据库等软件;
监控指标:监控对象的某一特征,例如服务器的CPU利用率、apiserver的RPS等。一般会周期性的采集,采集方式包括但不限于:Agent主动推送到Server、Server从Agent拉取、Agent发布Server订阅等方式,其值跟时间相关,类似下面的数据:
告警
告警系统根据设定的规则,周期性评估所有规则是否满足条件,并输出评估结果。这里解释一下几个概念:
告警规则:告警规则是一个或者多个监控指标运算表达式。例如:以一分钟为评估周期,内存使用率峰值大于60%;
评估:对所有的告警规则进行计算;
评估结果:评估的结果有三种情况:
满足:表达式成立。例如:内存使用率峰值>60%;
不满足:表达式不成立。例如:内存使用率峰值<=60%;
数据不足:采集的数据无法支撑表达式的计算。例如最近一分钟内没有采集到内存使用率的数据
通知
大多数监控告警系统,会把告警评估后的动作并入告警的范畴,动作可以是执行某个操作,但更多的情况是通知某对象,由某对象来执行具体的操作。通知模块负责将告警评估的结果发布出去,涉及到几个关键部分:
发布方式:以何种方式发布?例如:电视墙、大屏、短信、企业微信、邮件、电话、报警铃声等等
发布范围:发布的范围?例如:手机或者邮件的收件人列表
为什么需要监控告警系统
监控告警的作用:
图中监控告警系统的使用者包括:
运维人员:人力时代主要的用户。接受到监控告警系统的通知后处理告警,根据需要查看监控数据,并恢复监控对象的故障;
研发人员:根据告警、监控报表分析系统问题,指定优化方案,提升监控对象的可用性;
智能运维系统:根据告警信息调整监控对象,调整的方法可能有:
根据负载弹性伸缩
故障隔离
故障恢复等
总结起来包括以下两个方面:
提升系统可用性
改善用户体验
提升系统可用性
从上述公式可以看出,想要提升系统可用性,无外乎两个办法:
提升MTBF,即提升系统可靠性,让系统尽可能长时间稳定运行不出故障。监控告警系统的报表可以帮助研发人员分析系统存在的问题,不断改进,以提升可靠性;
降低MTTR,即减少故障修复时间,让故障快速恢复。监控告警系统从两个方面助力:
发现故障并告知智能运维系统自动扩容、自动恢复以应对过载、故障等情况;
从上图可以看出,对于产品的用户来讲,一般包含三种角色:
运维人员,负责所购买产品的运行维护,跟产品研发团队的运维人员类似,但关注的指标不同;
资源管理员,负责资源的规划、采购等。需要根据告警、监控的报表调整资源的规划和布局,例如某地资源利用率过低则减少该地的资源投入,某地负载过高则增加资源投入;
智能运维/调度系统,根据资源使用情况智能调整资源布局,例如:根据负载弹性伸缩,根据特征将流量调度到最合适的接入点等。
作为一个用户,对什么样的产品是更为满意呢?监控告警系统在提升用户满意度上又有什么作用?
用户对什么样的产品是更为满意。我觉得能让用户满意的产品至少有以下特点:
稳定、安全。这是基本要求;
透明。用户对产品的知情权,使用该产品能够给用户带来哪些收益,需要用户付出什么,有哪些限制等;
可操控。用户可以根据自身需要进行调整产品的规格和期限。
监控告警系统在提升用户满意度上的作用有:
可以提升系统的可用性;
让用户清楚的了解所购买产品的真实运行情况;
将运行情况(告警、报表等)告知用户,由用户决定产品的规格、期限以及分布情况