两招玩转阿里云系统事件监控
作者:田异常(昔今)
背景介绍
在当今快速发展的数字化时代,IT 系统和应用程序对业务运营至关重要。为了确保顺畅的性能、可靠性和安全性,IT 团队依靠监控事件来实时检测、分析和响应问题。监控事件是指任何影响 IT 系统正常运作的事件,例如服务器崩溃、网络中断或应用程序错误。这些事件可能对业务连续性、客户满意度和收入产生重大影响。
具体来说,作为阿里云监控系统中的重要组成部分,与监控指标不同,监控指标一般指一种数值型的监控纬度,一般需要配合设置阈值来进行监控来表达某一个监控含义,比如 CPU 使用率超过 60%。但是系统事件一般情况下具有完备的上下文信息,在阿里云体系中常用以描述服务的状态或者状态变化,常见如以下场景:
系统运行中的一些关键状态事件,比如 ECS 系统错误重启、弹性伸缩失败、IOT QPS 达到上限。
记录和审计,比如投递 OSS 失败。
系统连续性问题,比如 DDos 黑洞进行中。
重要安全事件,比如 安全告警:异常网络连接(提醒)。
目前大部分的云服务服务已经完成接入云监控,具体详情可以参加下面文档:https://help.aliyun.com/zh/cms/user-guide/appendix-2-system-events?spm=5176.2020520111.console-base_help.dexternal.3d6d6610UEXzUw#concept-2500373
监控好这些系统事件对于用户是一件非常重要的事情。
云监控事件订阅设计初衷
在系统事件订阅功能上线之前,云监控是通过设置报警规则来实现对系统事件的监控,但是在使用中,慢慢透露出一些不足,包括:监控方式的不灵活、不能支持黑名单、通知内容格式僵化等等。
通过对之前的用户需求分析,我们设计了新的云监控事件订阅用来以实现以下功能:
通过灵活的订阅配置,支持系统事件或阈值事件,支持从产品、事件级别、事件名称、事件资源,事件内容的筛选;支持筛选的黑白名单操作等等;
通过分组合并降噪,可以实现产品级,事件级,资源级等等级别的报警合并,然后通过条件降噪(固定时长内发生超过某个阈值事件数量)来控制报警的有效性,避免大量重复报警造成报警风暴;
对于合并降噪后的有效报警通知,云监控可以直接推送到邮件、电话、短信、钉钉、企业微信等
支持通过灵活定制通知模版来满足用户自身的业务需求,用户可以通过配置自己的模版,来实现个性化的通知格式定制;
定制了自定义的通知模版,可以在订阅规则上通过自定义通知方式,给具体的通知渠道指定通知的级别和模板;
还可以通过通知模板自定义推送的数据格式,通过我们在集成与推送,直接讲报警数据转换为用户需要的格式,推送到消息服务 MNS、日志服务 SLS、函数计算 FC 和 Webhook。
典型云监控场景介绍
下面,我们通过两个典型的用户场景来介绍如何使用云监控事件订阅:
场景 1:多运维团队场景
用户使用了阿里云 ECS RDS REDIS SLB 等云服务;
用户有两个独立运维团队,分别运维 ECS SLB 和 RDS REDIS;
用户希望监控每个团队监控团队自己独立的服务;
对于紧急的电话报警,两个团队需要相互 backup,当一个团队电话打不通的时候,通知另外一个团队;
需要排除掉一些预发和测试环境的实例。
具体的操作步骤如下:
进入事件中心界面,点击创建订阅策略。
在弹出的窗口中,按照需求设置我们的订阅配置。
我们这里设置了订阅的说明如下:
1 ) 范围是 ECS 和 RDS 的所有 CRTICAL 级别事件,再排除掉其中的测试和预发的相关资源(根据资源名称排除);
订阅好的报警,我们希望按照不同的产品来进行合并通知,这样 RDS 的事件和 ECS 的事件会被作为独立的报警发送通知给用户;
设置了 5 分钟内,每个产品(我们选择的合并字段)下需要连续收到 5 个事件才会通知,通知一次之后 5 分钟内不再重复通知。
设置好了订阅配置,下面我们来配置通知。
在下面的通知配置中,我们可以选择已经有的通知配置,也可以选择创建一个新的通知配置,这里我们以创建新的通知配置为例,点击创建通知配置之后,弹出如下对话框:
最简单的情况,我们可以直接选择通知到某一个组。
对于一些非常关键的报警,为了防止电话拨打没有接通的情况,我们还可以配置电话报警备选通知组,当上面配置的所有电话报警联系人都没有接通电话的情况下,将按照定义的备份电话报警联系组顺序,每三分钟逐个通知备份电话联系组,直到电话接通或者所有备份联系组都通知完成。
如果用户需要按照不同严重级别发送给不同的人,也可以选择按照严重级别独立通知联系组,如下图:
设置好了通知接受对象后,我们还可以继续对通知方式进行定制。
如果用户希望对于报警方式进行进一步的定制,可以通过自定义通知方式来实现。
这里,我们可以对报警通知的消息模版进行选择,可以定义每个报警级别通知的渠道,来实现用户定制化报警的需求。
设置好了通知后,如果对于一些报警,我们希望推送到我们自己的系统中,我们可以使用推送和集成来进行配置。
点击添加渠道,在弹出的对话框中选择我们对应的渠道进行推送,我们这里以 webhook 为例。
通过设置具体的推送目标和方式,可以实现数据推送到用户服务的需求。
到这里订阅和通知的配置基本就完成了,但是用户如果有需要自定义通知模板的情况,来满足自定义的通知需求,配置通知模版的方式如下:
进入通知模版界面,点击创建通知模版。
模板配置相对比较复杂,建议参考我们预先提供的模板,在基础上修改,然后通过我们的预览功能来验证配置模版是否符合预期,预览完成后,还可以用右上角的小飞机按钮来发送一次测试通知,最终效果发送到用户的真实接收方来验证最终效果。
模版修改好后,可以在订阅界面的自定义通知方式的位置,修改通知方式,然后选择通知模版即可。
场景 2:使用应用分组实现灵活订阅能力
应用分组是云监控里面的一个重要监控概念,用来描述一组有关联的云资源,比如 ECS 实例、RDS 实例、SLB 实例等。应用分组可以监控应用组中资源的状态,当资源状态发生变化时,应用组会收到通知。我们就以应用组为例,介绍如何使用应用组监控阿里云系统事件。
进入云资源监控 -> 应用分组
然后点击你需要进行监控的分组,出现如下界面:
先设置这个分组的联系人组;
点击开启系统事件订阅;
两步操作,非常简单。至此,一个最简单的应用分组订阅已经完成,它会监控当前分组下资源上报的所有 CRTICAL 和 WARNING 的资源,并通知设置的联系组。
如果我们还需要把事件推送到用户服务,通过点击事件订阅后的通知详情,然后在弹出窗口中添加渠道即可把已经定义好的推送渠道引用进来。
写在最后
上面是两种典型的订阅系统事件的场景介绍,在这个场景的基础上,用户可以扩展到自己的场景中,来实现灵活的订阅通知能力,通过我们的模版,订阅来满足自己的监控需求。
点击此处,体验云监控产品。
版权声明: 本文为 InfoQ 作者【阿里巴巴云原生】的原创文章。
原文链接:【http://xie.infoq.cn/article/d40b73da010dd57d9f51af44d】。文章转载请联系作者。
评论