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

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
文件存储 NAS,50GB 3个月
简介: 阿里云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 已经是私有:


进一步参考

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

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
4月前
|
监控 Kubernetes Go
日志采集效能跃迁:iLogtail 到 LoongCollector 的全面升级
LoongCollector 在日志场景中实现了全面的重磅升级,从功能、性能、稳定性等各个方面均进行了深度优化和提升,本文我们将对 LoongCollector 的升级进行详细介绍。
408 86
|
5月前
|
安全 Linux 虚拟化
Palo Alto Cortex XSOAR 8.8 for ESXi - 安全编排、自动化和响应 (SOAR) 平台
Palo Alto Cortex XSOAR 8.8 for ESXi - 安全编排、自动化和响应 (SOAR) 平台
98 0
Palo Alto Cortex XSOAR 8.8 for ESXi - 安全编排、自动化和响应 (SOAR) 平台
|
5月前
|
SQL 监控 数据挖掘
SLS 重磅升级:超大规模数据实现完全精确分析
SLS 全新推出的「SQL 完全精确」模式,通过“限”与“换”的策略切换,在快速分析与精确计算之间实现平衡,满足用户对于超大数据规模分析结果精确的刚性需求。标志着其在超大规模日志数据分析领域再次迈出了重要的一步。
478 118
|
8月前
|
存储 运维 监控
日志服务SLS焕新升级:卓越性能、高效成本、极致稳定与智能化
日志服务SLS焕新升级,涵盖卓越性能、高效成本、极致稳定与智能化。新功能特性包括Project回收站、ELasticsearch兼容方案及全链路数据处理能力提升。通过扫描计算模式和数据加工优化,实现更好的成本效果。案例分析展示了一家国内顶级车企如何通过日志服务实现跨云、跨地域的全链路数据处理,大幅提升问题处理效率。
203 9
|
9月前
|
SQL 存储 缓存
日志服务 SQL 引擎全新升级
SQL 作为 SLS 基础功能,每天承载了用户大量日志数据的分析请求,既有小数据量的快速查询(如告警、即席查询等);也有上万亿数据规模的报表级分析。SLS 作为 Serverless 服务,除了要满足不同用户的各类需求,还要兼顾性能、隔离性、稳定性等要求。过去一年多的时间,SLS SQL 团队做了大量的工作,对 SQL 引擎进行了全新升级,SQL 的执行性能、隔离性等方面都有了大幅的提升。
365 93
|
8月前
|
机器学习/深度学习 人工智能 运维
基于AI的自动化事件响应:智慧运维新时代
基于AI的自动化事件响应:智慧运维新时代
369 11
|
10月前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
172 4
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
711 14
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
11月前
|
存储 消息中间件 运维
架构升级的救星!流量回放自动化测试的必备指南
大家好,我是小米,一名29岁的技术宅。今天分享一个物联网领域的实用技能——流量回放自动化测试。系统重构后,测试工作量巨大,本文介绍如何通过日志收集和数据回放进行自动化测试,包括离线、实时和并行回放模式,帮助快速定位Bug,提升测试效率和系统稳定性。欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
329 3

相关产品

  • 日志服务