在数字化转型的浪潮中,企业对于高效、智能的运维管理需求日益迫切。AWS作为全球领先的云计算服务提供商,提供了丰富的云服务来满足这些需求,不少公司的业务都托管于此。
当前大型公司存在多个应用同时在线,不同的应用由不同的项目组维护且多账户隔离。作为infra的构建者和运维者,我们避免不了需要将一些由项目方处理的告警信息通知给对方。由于业务组可能对云上原生告警解读会存在偏差,我们则需要翻译成他们可以读懂的告警,甚至是给出解决意见。如果对每个告警都需要去做相应邮件编写,那么工作量将是巨大的。
本方案将展示如何利用AWS原生部署技术规模自动化部署CloudWatch告警系统,并结合AI生成技术,在告警触发时通过SNS服务触发Lambda函数,自动生成解决建议(内容丰富)的邮件模板发送给应用方。这一方案将极大地提升运维效率,降低人工干预成本。
第2章 方案概述与设计
本方案旨在通过AWS自动化IAC工具规模化部署CloudWatch告警系统和AI告警邮件生成系统,当系统出现异常或达到预设阈值时,CloudWatch将触发SNS服务,SNS服务随后通知Lambda函数。Lambda函数将接收到的告警内容传递给AI语言模型,生成简短易懂、避免幻觉的解决建议内容丰富告警数据,并通过邮件服务发送给项目应用方。告知其当前发生了什么,需要怎么做。
方案设计两部分系统:
CloudWatch自动告警系统
AI告警邮件生成系统
告警自动集成以及SNS服务通知部分
• 通过利用CloudWatchAutoAlarms Lambda开源项目原生的解决方案能力,合理利用现成的AWS自动化IAC工具实现快速部署Cloudwatch告警。
• 利用CloudWatchAutoAlarms Lambda开源项目部署的消息部署功能,在AWS SNS服务中创建一个主题,用于接收CloudWatch的告警消息。
• 配置SNS主题的订阅者,确保在告警触发时能够通知到后续告警处理的Lambda函数。SNS服务将确保告警消息的及时传递,提高系统的响应速度。
Lambda函数处理与AI集成部分
• 利用AWS原生的函数服务同其他原生服务的集成优势,通过编写Lambda函数代码,负责接收SNS服务传递的告警消息。
• Lambda函数用于处理告警响应和调用AI语言模型(如基于GPT系列的语言模型),根据告警内容生成解决建议的邮件模板。通过SNS发布邮件到下游系统网管系统用以发出告警邮件通知。
• Lambda函数还需配置执行权限和依赖项,确保能够正常调用AI语言模型并发送邮件。
AI语言模型生成建议
• 选择的AI语言模型需具备强大的自然语言理解和生成能力,能够准确理解告警内容并生成简短易懂、避免幻觉的解决建议。
• 通过题词工程规范生成输出,确保邮件模板的准确性和可读性。
• 下游系统集成,需要提前调研下游系统的API,以便SNS能够将丰富后的告警内容推送过去。
CloudWatchAutoAlarms Lambda是github上的一个开放的项目。用于为打上指定tag的EC2,RDS实例自动创建CloudWatch告警。
CloudWatchAutoAlarms AWS Lambda 函数使你能够使用标签为你的 Amazon EC2 实例或 AWS Lambda 函数快速自动创建一组标准 CloudWatch 警报。 它可以防止手动创建警报可能发生的错误,减少部署警报所需的时间,并缩小创建和管理警报所需的技能差距。 它在大规模迁移到 AWS 的过程中特别有用,因为许多资源可能会同时迁移到你的 AWS 账户中。
默认配置为支持 Windows、Amazon Linux、Redhat、Ubuntu 或 SUSE EC2 实例的以下 Amazon EC2 指标创建警报:
• CPU利用率
• CPU积分余额(对于T类实例)
• 已用磁盘空间百分比(Amazon CloudWatch代理预定义的基本指标)
• 已用内存百分比(Amazon CloudWatch代理预定义的基本指标)
默认配置还会为以下 AWS Lambda 指标创建警报:
• Errors
• Throttles
你可以通过更新lambda函数字典来更改或添加警报。
当带有标签键 Create_Auto_Alarms 的 EC2 实例进入运行状态时,将创建 Amazon CloudWatch 警报,并在实例终止时将其删除。
可以在首次启动实例时创建警报,也可以在实例启动后通过停止和启动实例来创建警报。警报是基于 EC2 标签创建和配置的,其中包括指标名称、比较、周期、统计信息和阈值。
可以通过更改标签键或值以及停止和启动实例来更新警报。
创建的警报配置为通知你使用 DEFAULT_ALARM_SNS_TOPIC_ARN 环境变量指定的 Amazon SNS 主题。通过SNS服务可以实现消息通知,打通告警消息和其他服务应用的通道。在本方案中我们需要的是当告警触发时通过SNS服务触发AI告警邮件系统中的的Lambda函数。
AI告警邮件生成系统,需要自己开发,将上面CloudWatch告警操作部分接入SNS告警预处理消息队列。通过lambda订阅该队列,触发对告警内容的AI提示生成适当的解决内容,并嵌入告警数据结构,发送至消息队列,再通过消息队列的https推送,将生成丰富好的告警数据发送至(下游运维系统)FlushDuty API,借助下游运维软件的邮件功能,分别将告警信息发送至对应的项目应用组邮件中。
该 Lambda 函数的主要功能步骤:
• 监听来自 SNS 的 AWS CloudWatch 告警消息,该消息由前面部署的CloudWatch告警产生。
• 解析告警信息,提取关联资源(如 EC2、RDS)的标签(Tag)和关键信息(如 IP 地址)。
• 调用 大模型的AI接口,自动生成一条用简洁、乐观、非技术化语言描述告警的“简短总结”。
• 将 enriched(丰富后的)告警信息再次通过 SNS 发布到下游系统(例如网管平台,轮班通知系统等)FlushDuty。
• 通过AWS开源原生方案实现监控的自动化部署和管理,降低运维成本。
• 简化资源管理和配置过程,提高部署效率。
• 结合AI生成技术,实现告警内容的智能分析和处理。
• 自动生成解决建议的邮件模板,提高问题解决效率。
• 通过运维平台的邮件服务将解决建议发送给应用方,增强沟通协作。
• 问题响应速度和处理效率,提升客户满意度。
e
1'"
@@bmI69
e'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
vRAD80Iw'; waitfor delay '0:0:15' --
1 waitfor delay '0:0:15' --
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
if(now()=sysdate(),sleep(15),0)
-1" OR 2+344-344-1=0+0+0+1 --
J6qORmrq
-1 OR 2+640-640-1=0+0+0+1 --
-1 OR 2+406-406-1=0+0+0+1
-1' OR 2+137-137-1=0+0+0+1 --
-1' OR 2+379-379-1=0+0+0+1 or 'c0oMdGa1'='
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e
e