CloudWatch告警增强-接入SLS开放告警

简介: CloudWatch是AWS提供的可以用来实时监控AWS资源以及运行在AWS上的应用的一个服务,通过收集和跟踪指标数据来评估相关资源和应用程序,通过CloudWatch,用户可以全面直观地了解资源的使用情况已经应用程序的运行性能。通过下图可以看出,CloudWatch在AWS的安全体系中扮演着检测以及自动响应的角色。CloudWatch用来监控的功能是Alarms,创建一个Alarm意味着对某个资源或程序进行监控,如果监控的对象的指标数据处于异常状态,就会触发该Alarm,从而进行相应的行为。

CloudWatch介绍

CloudWatch是AWS提供的可以用来实时监控AWS资源以及运行在AWS上的应用的一个服务,通过收集和跟踪指标数据来评估相关资源和应用程序,通过CloudWatch,用户可以全面直观地了解资源的使用情况已经应用程序的运行性能。通过下图可以看出,CloudWatch在AWS的安全体系中扮演着检测以及自动响应的角色。CloudWatch用来监控的功能是Alarms,创建一个Alarm意味着对某个资源或程序进行监控,如果监控的对象的指标数据处于异常状态,就会触发该Alarm,从而进行相应的行为。常见的触发告警后的行为包括通过SNS(Simple Notification Service)发送告警消息,以及自动响应告警(例如服务器扩容、停止、重启以及记录事件等动作)。

如下图所示为CloudWatch的工作原理图,可以看出,CloudWatch的核心功能在于收集和管理各类指标数据,然后对于指标数据的用途有两种,一种是提供可观测的能力,一种是基于指标数据创建告警。指标数据的来源一般分为两种:

  • 自动为AWS资源创建指标数据。例如用户购买了EC2服务,那么在Metrics中就可以直接添加EC2的各种指标(如CPU使用率、磁盘使用率等)。
  • 用户手动生成指标数据。例如在CloudWatch中添加了某些日志,对于这些日志可以添加一个指标过滤器(如过滤事件类型为登录的操作),那么就可以对这些日志就可以得到对应的指标数据。

CloudWatch的基本告警类型有两种,分别是静态阈值告警和异常检测告警。静态阈值告警就是将指标数据与用户设定的阈值进行比较,超过该阈值就会触发告警;异常检测告警会根据历史指标数据使用机器学习的训练模型计算出指标数据的正常区间,如果指标数据超过了这个正常区间就会触发告警。创建一些常见的告警请参考AWS官方文档Using alarms

CloudWatch-Alarms使用

CloudWatch的Alarms的本质上是对指标数据的监控,因此对于某些资源和应用程序没有自动生成指标数据的话,就需要用户手动地创建出Metric,才能对其监控。下面将使用监控EC2的CPU使用率作为示例来演示如何使用CloudWatch的Alarms功能。

创建一个Alarm的步骤如下:

  1. 选择指标数据

如下图所示为选择了某个EC2的的CPU使用率指标数据后的图表。

选定了指标数据以后,就可以配置指标数据和触发条件了。指标数据的配置主要包括两点,一点是Statistic(统计方式),一点是Period(计算周期)。默认的统计方式是平均值,意味周期结束的指标值为一个计算周期内指标数据的平均值。下图所示是触发条件和高级设置。

可以阈值类型分为静态和异常检测两种。在高级配置中有个Datapoints to alarm,如果用户配置的是2 out of 3,那么意味着如果在3个计算周期内,有大于等于2个计算周的指标值是超过阈值的才会触发告警。

  1. 配置行动

行动包括四种,分别是:

  • Notification,指的是通过SNS发送告警通知,SNS支持邮件、短信、HTTP协议以及SQS(AWS的消息队列服务)。
  • Auto Scaling action,指的是在触发告警时可以自动扩容。
  • EC2 action,指的是触发告警时EC2的相关行为,如停止、重启。
  • Systems Manager action,指的是在系统管理中创建一个操作项或者事件。

  1. 添加描述

最后为该Alarm添加一个名称以及描述就可以成功创建该Alarm。

CloudWatch接入开放告警

CloudWatch在告警方面的优势在于自动响应告警,缺点在于对于通知管理的功能尤为薄弱,例如用户无法配置告警通知的内容,对于国内的通知渠道不完善(通知渠道不包含钉钉、企业微信等),以及不支持轮岗代班场景和动态发送告警通知等,因此,将Cloud Watch的告警消息接入SLS的开放告警,可以极大地增强其告警的能力。将CloudWatch告警接入开放告警的步骤如下:

  1. 创建一个SNS主题,然后为这个主题创建一个订阅,协议需要选择HTTP,Endpoint选择创建开放告警应用后生成的接口信息,并且勾选中Enable raw message delivery。创建好了订阅以后,SNS会为这个Endpoint发送一个携带确认链接的HTTP请求,(如果协议选择的是邮件,那么SNS会为配置的邮箱发送一个确认邮件,用户需要点击确认邮件中的链接才能完成订阅),SLS会自定访问HTTP请求中的确认订阅链接,完成订阅后,订阅会处于Confirm状态,如下图所示。

  1. 进入目标Alarm的编辑界面,在配置行动的步骤为,添加两个Notification,其中一个通知的Alarm state trigger配置为In alarmInsufficient data,表示告警处于对应的状态时,系统发送告警通知。另一个通知的Alarm state trigger配置为OK,表示告警恢复时,系统发送一条恢复通知。
  2. 完成Alarm的更新,在SLS中查看CloudWatch的告警消息。

总结

CloudWatch作为AWS上用于监控的一个服务,其检测异常以及自动响应的功能很强大,但是对于告警的通知管理功能比较薄弱,本质上是因为ClouWatch自身并不具备通知的功能,只能通过SNS服务来达到通知的目标。因此,将CloudWatch的告警消息接入到SLS中,就可以极大地增强其告警通知的功能,从而保证了用户能够稳定快速地解决问题。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
5天前
|
JSON Prometheus Cloud Native
Grafana 系列 -Loki- 基于日志实现告警
Grafana 系列 -Loki- 基于日志实现告警
|
8月前
|
Web App开发 存储 监控
日志服务之告警接入与管理
本教程介绍如何使用日志服务接入NGINX模拟数据,并配置告警规则来对NGINX访问错误进行监控。
339 0
|
6月前
|
监控 数据库
136 日志监控告警系统案例(代码实现)
136 日志监控告警系统案例(代码实现)
83 0
|
6月前
|
监控
135 日志监控告警系统案例(数据模型设计)
135 日志监控告警系统案例(数据模型设计)
86 0
|
6月前
|
消息中间件 监控 关系型数据库
134 日志监控告警系统案例(功能架构分析)
134 日志监控告警系统案例(功能架构分析)
81 0
|
6月前
|
分布式计算 监控 前端开发
133 日志监控告警系统案例(需求分析)
133 日志监控告警系统案例(需求分析)
58 0
|
SQL 监控 关系型数据库
【python小脚本】监听日志文件异常数据发送告警短信
老项目中有个用脚本启动的服务,很重要,用来做业务留痕的,涉及业务客户经常性投诉,是找第三方做的,时间长了维护需要花钱,老出各种未知bug,没办法处理所以机器上配了定时任务,定期的几天重启一次来解决。 但是有时候不知道什么原因,重启脚本运行,服务没起来,crond 也没有什么调度机制。 希望写个脚本做监控,当发现服务没起来,发送告警信息,或者重启服务。
145 0
|
监控
限制SLS告警通知时段的几种常见方法
在对系统进行监控告警的过程中,有时候并非在任何时候都要接收告警通知,本文会介绍几种常见的限制告警通知时段的方法,以及它们各自所适用的场景。
354 0
限制SLS告警通知时段的几种常见方法
|
机器人 定位技术
GrayLog+nxlog采集邮箱登录日志csv文件并实现邮箱异地登录钉钉机器人告警
GrayLog+nxlog采集邮箱登录日志csv文件并实现邮箱异地登录钉钉机器人告警
267 0
GrayLog+nxlog采集邮箱登录日志csv文件并实现邮箱异地登录钉钉机器人告警
|
运维 监控 安全
启用控制面日志采集及告警提升系统稳定性
服务网格的控制面组件扮演的一个重要角色是负责推送网格的规则配置到数据面的Sidecar代理或者网关中。如果用户配置的网格规则内容存在一些冲突导致推送失败, 因此代理或者网关就接收不到最新的配置内容。 因为代理或网关在不重启的情况下, 仍然可以使用已经接收到的配置继续运行, 但是一旦这些Pod重启, 很有可能导致Sidecar代理或网关启动失败。 在很多实际的客户场景中, 经常出现用户误配置引发的网关或代理不可用问题, 因此启用控制面的日志告警, 及时发现问题、解决问题势在必行。 ASM支持采集控制平面日志和日志告警,例如采集ASM控制平面向数据平面Sidecar推送配置的相关日志。
245 0
启用控制面日志采集及告警提升系统稳定性

热门文章

最新文章