SLS告警响应升级——通知对接FC进行自动化操作

本文涉及的产品
对象存储 OSS,20GB 3个月
云备份 Cloud Backup,100GB 3个月
对象存储 OSS,内容安全 1000次 1年
简介: 阿里云SLS告警响应升级,通知渠道新增了对函数计算的支持,从而可以在告警触发的时候进行一定的自动化响应操作,以便进行故障自愈,减轻手动运维压力,提高系统的可用性。

前言

所谓监控,直白来说就是“监测并进行控制”。通过对数据的监测,我们可以发现其中的异常,例如机器的CPU使用率异常。异常会触发告警,然后告警会被通知到相应的负责人,以便进行后续的处理。通常我们对告警会有多种方式进行通知,例如通过短信、电话、钉钉等方式。

但是告警并不是目的,异常产生后最终的目的是消除异常,因此除了人为接收通知之外,在某些场景下,我们还需要程序去接收,然后做一些自动化的事情。例如发送通知到一个 Web 服务,然后根据告警详情进行后续的自动操作(比如根据业务规则做一些自动运维操作)等。但是如果从头开始编写一个Web服务然后部署,又是一件比较麻烦的事情,SLS告警加入了对函数计算(FC)的支持,让告警的自动化响应变得简单。

告警通知对接FC

1. 授权RAM访问角色

为了告警触发后,日志服务可以调用你的函数计算里的函数,需要授权日志服务相应的权限。进入告警中心后,可以“点击授权”进行一键授权。

也可以在配置行动策略的时候进行授权:

这里需要注意,如果登录的是子账号,需要具备如下RAM权限才可以授权成功,否则会有相应的错误提示。

{
"Statement": [{
"Action": "ram:CreateServiceLinkedRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": "alert.log.aliyuncs.com"      }
    }
  }],
"Version": "1"}


2. 创建FC函数

需要在函数计算控制台创建函数,这里需要注意的是:

  • SLS告警通知渠道中,FC通知仅支持非HTTP函数,如果是HTTP函数,直接使用自定义Webhook通知渠道就可以了。
  • 由于安全限制,因此SLS仅能访问名称以 "sls-ops-" 开头的函数,例如 "sls-ops-test",而例如 "test-function" 这样的函数则无权限访问。

这里我们创建一个非常简单的函数,示例代码如下:

'use strict';
exports.handler= (event, context, callback) => {
console.log(event.toString());
callback(null, 'hello world');
}

3. 创建行动策略

我们可以创建一个行动策略,在行动组中配置相应的函数,例如:

4. 创建告警规则

在通知中选择刚才创建的行动策略。

告警触发后可以看到函数的调用日志里已经有相应的记录:

这里需要注意的是,告警通知对接到FC函数默认都是异步调用的方式。

案例:限制OSS Bucket必须为私有访问

考虑一个场景,无论是新建 OSS Bucket 还是修改 Bucket 的 ACL权限,都必须限制为私有访问,如果发现有公共读或者公共读写,就需要快速发现并立即自动修复。在这个场景下,如果完全依赖于人工去修复,就会比较麻烦,因此我们的解决思路如下:

  • 开通 OSS 操作审计日志
  • 由于新建 Bucket 或者修改 Bucket 的 ACL 权限,最终都是一条 PutBucket 的审计日志,因此我们可以检测该日志,然后抽取出地域、Bucket名称等信息,触发一条告警。
  • 告警通知发送到FC函数,FC对该Bucket的ACL权限进行检测,如果发现是不合规的,则自动修复。

1. 新建FC函数

我们可以新建一个FC函数,用来检测 Bucket 的 ACL 权限设置是否为私有,如果不是私有,则将其修改为私有。示例代码如下:

constOSS=require('ali-oss')
constaccessKeyId='**********'constaccessKeySecret='**********'asyncfunctioncheckBucketAcl(region, bucket) {
constclient=newOSS({
region: `oss-${region}`,
accessKeyId,
accessKeySecret  })
constresult=awaitclient.getBucketACL(bucket)
if (result.acl!=='private') {
awaitclient.putBucketACL(bucket, 'private')
  }
}
exports.handler=async (event, context, callback) => {
constalert=JSON.parse(event.toString())
for (constresultofalert.fire_results) {
const { region, bucket } =resultawaitcheckBucketAcl(region, bucket)
  }
callback(null, '')
}


2. 开通OSS操作审计日志

打开日志服务控制台,进入日志审计服务,开启OSS访问日志。

3. 新建告警

在操作审计日志里,我们可以看到,创建 Bucket 或者修改 Bucket ACL 会记录如下日志:

因此我们可以通过如下查询分析语句筛选出 Bucket 的地域和名称:

event.ServiceName: Oss and  event.eventName: PutBucket |select"event.acsRegion"as region, split("event.eventSource",'.')[1]as bucket

然后新建告警:

4. 事件触发

我们将 Bucket 的 ACL 修改为公共读:

然后会发现有一条告警触发:

FC的函数调用日志可以看到调用记录:

再回到 OSS 看,Bucket 的 ACL 已经是私有:


进一步参考

对我们工作感兴趣的,可以通过如下方式了解更多,谢谢关注!

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
2月前
|
SQL Java Serverless
实时计算 Flink版操作报错合集之在写入SLS(Serverless Log Service)时出现报错,该如何排查
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
3月前
|
弹性计算 Serverless 应用服务中间件
Serverless 应用引擎操作报错合集之集成sls时出现报错,是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
21天前
|
Devops jenkins 持续交付
DevOps 实践:自动化部署与持续集成的无缝对接
【8月更文挑战第30天】本文旨在通过浅显易懂的语言,向读者展示如何在现代软件开发中实现 DevOps 理念下的自动化部署和持续集成。我们将从基础概念出发,逐步深入到实际操作,不仅分享理论知识,还将提供具体的代码示例,帮助读者快速掌握如何将这两个关键环节有效结合,以提高开发效率和软件质量。
|
2月前
|
存储 JavaScript Serverless
函数计算产品使用问题之如何获取请求ID并响应给调用者
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2月前
|
存储 JavaScript Serverless
函数计算产品使用问题之如何实现项目自动化部署
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
数据采集 Web App开发 前端开发
Selenium:自动化Web浏览器操作的强大工具
**Selenium** 是一款用于自动化Web应用测试和模拟用户行为的工具,支持多种浏览器和编程语言。安装包括安装Selenium库和对应浏览器的WebDriver。基本用法包括导入库、启动浏览器、查找与操作页面元素、等待元素加载及关闭浏览器。在实际项目中,Selenium常用于Web测试、爬虫、自动化表单填写等,优点是跨平台、模拟真实用户行为,但性能较低且依赖浏览器。
86 9
|
3月前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之sls日志告警调用函数计算,出现抛出的结果异常,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
3月前
|
存储 运维 Serverless
函数计算产品使用问题之日志告警不生效,一般是由于什么造成的
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
运维 安全 Serverless
函数计算产品使用问题之怎么集成自动化部署
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
程序员 API 计算机视觉
技术经验解读:【python自动化】02.pywin32库自动操作键鼠(保姆级代码注释)
技术经验解读:【python自动化】02.pywin32库自动操作键鼠(保姆级代码注释)
81 0

热门文章

最新文章

相关产品

  • 日志服务