行动策略过于复杂怎么办?试试下面一些解决方法

背景

随着使用SLS告警越来越深入,有些用户的行动策略会配置的特别复杂,有些时候可以让用户通过创建多个行动策略来进行一定的精简,但是在一些场景下,用户是无法创建多个行动策略的。例如用户想要通过SLS来统一管理其各个监控系统的告警,所以采用了SLS的开放告警功能,这种情况下,用户一般一个监控系统就只会创建一个开放告警应用,也就只能对应一个行动策略,所以随着需要动态分派告警的各种情况增多,行动策略就会急剧膨胀,从而出现以下情况:

  • 在控制台无法保存
  • 在前端修改时加载过于卡顿
  • 告警延迟增加

因此,对于上述问题,本文介绍了三种优化的方案。

方案对比

利用告警策略拆分行动策略使用SDK压缩行动策略内容使用动态接收人
适用场景适用于熟悉告警策略,并且告警的标签和标注特征明显的情况优点:管理清晰、不容易出错缺点:配置麻烦适用于对告警SDK使用熟练,并且熟悉告警相关DSL语法的用户优点:可以极大地精简行动策略缺点:学习成本高,容易出错适用有自己的企业用户管理系统,或者无法在行动策略分派的情况优点:SLS侧配置简洁缺点:用户需要实现一个提供动态分派通知人能力的webhook服务,并且只支持短信、语音和邮件通知渠道

利用告警策略拆分行动策略

告警策略在配置路由合并策略的时候,是可以按照告警的一些信息采用不同分组合并的,而不同的分组合并又可以选择不同的行动策略,所以手动将每个分组合并的其余配置全部改为和默认告警策略的一致,那么就可以实现拆分行动策略的目的了。(默认告警策略的分组合并中,合并基准选择自定义,告警属性选择告警规则ID和规则所在项目,告警标签选择所有,首次等待选择1秒,变化等待选择15秒,重复等待选择1分钟)

如下图所示,如果使用一个行动策略的话,那么该行动策略中既要考虑标签中appName为app0的情况,还要考虑appName为app1的情况,按照下图所示的方法拆分后,那么行动策略0中只需要考虑appName为app0的情况,行动策略1中只需要考虑appName为app1的情况,这样就完成了对行动策略的拆分。

最后,在创建告警监控规则或者开放告警应用的时候选择上面创建的告警策略即可。

使用SDK压缩行动策略内容

SLS的控制台在配置行动策略的时候,由于需要保存节点的一些UI信息,那么在存储行动策略时的配置内容就会特别大,容易超出资源数据的大小限制,从而导致从控制台上无法保存。如果是通过SDK管理行动策略的话,那么可以省去控制台上那些额外的UI信息,这个行动策略的大小就会变小很多。例如通过以下代码创建一个行动策略。

package main
import ("fmt"sls "github.com/aliyun/aliyun-log-go-sdk"
)
var (// 日志服务的服务入口。创建资源必须是河源区域。endpoint = "cn-heyuan.log.aliyuncs.com"// 阿里云访问密钥AccessKey。更多信息,请参见访问密钥。阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维。accessKeyId     = ""accessKeySecret = ""// 创建日志服务Client。client = sls.CreateNormalInterface(endpoint, accessKeyId, accessKeySecret, "")
)
func main() {actionPolicy := &sls.ResourceActionPolicy{ActionPolicyId:              "test-action-policy",ActionPolicyName:            "Test Action Policy",PrimaryPolicyScript:         "if alert.labels.appName == \"app0\":\n    fire(type=\"sms\", users=[\"user1\"], groups=[], oncall_groups=[], receiver_type=\"static\", external_url=\"\", external_headers={}, template_id=\"sls.builtin.cn\", check_quota=\"true\", period=\"any\")\n    stop()\nif alert.labels.appName == \"app1\":\n    fire(type=\"email\", users=[\"user2\"], groups=[], oncall_groups=[], receiver_type=\"static\", external_url=\"\", external_headers={}, template_id=\"sls.builtin.cn\", check_quota=\"true\", period=\"any\")\n    stop()\nfire(type=\"webhook_integration\", integration_type=\"dingtalk\", webhook_id=\"user3\", template_id=\"sls.builtin.cn\", period=\"any\")",SecondaryPolicyScript:       "",EscalationStartTimeout:      "10m",EscalationInprogressEnabled: false,EscalationInprogressTimeout: "30m",EscalationEnabled:           true,EscalationTimeout:           "1h",}record := &sls.ResourceRecord{Id:    actionPolicy.ActionPolicyId,Tag:   actionPolicy.ActionPolicyName,Value: sls.JsonMarshal(actionPolicy),}err := client.CreateResourceRecord("sls.alert.action_policy", record)fmt.Println("[create action policy]", err)
}

第一列行动策略对应的DSL语法的脚本展开如下:

if alert.labels.appName == "app0":fire(type="sms", users=["user1"], groups=[], oncall_groups=[], receiver_type="static", external_url="", external_headers={}, template_id="sls.builtin.cn", check_quota="true", period="any")stop()
if alert.labels.appName == "app1":fire(type="email", users=["user2"], groups=[], oncall_groups=[], receiver_type="static", external_url="", external_headers={}, template_id="sls.builtin.cn", check_quota="true", period="any")stop()
fire(type="webhook_integration", integration_type="dingtalk", webhook_id="user3", template_id="sls.builtin.cn", period="any")

创建好了以后,在控制台上点击编辑创建好的行动策略如下图所示。通过SDK创建的行动策略没有UI信息,但是依然可以正常运行。

上述的行动策略对应的有UI信息的行动策略如下图所示。

使用动态接收人

SLS提供了动态接收人功能,可以通过Webhook服务设置告警通知的动态接收人。该Webhook服务办不仅可以按照SLS的用户模型返回需要通知告警的联系人方式,还可以进行告警的动态分派,实现与行动策略相同的能力,不仅如此,由于行动策略无法支持按照特殊内容(例如告警的fire_results字段)进行动态分派,因此在这种情况下就必须使用动态接收人的方式了。

如下图所示,使用动态接收人后,行动策略就只需要一个行动节点,从而变得简洁。

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510329.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从效能公式解构研发效能

这几年,云原生、Web3.0、元宇宙等技术的出现和应用,正在深刻地改变着我们这个世界。以数字技术应用为主线的数字化转型是此次人类文明变革的核心动力。在这一变革过程中,软件研发模式的发展起到了重至关重要的作用。从早期瀑布式、精益敏捷、…

阿里CCO:基于 Hologres 的亿级明细 BI 探索分析实践

CCO是Chief Customer Officer的缩写,也是阿里巴巴集团客户体验事业部的简称。随着业务的多元化发展以及行业竞争的深入,用户体验问题越来越受到关注。CCO体验业务运营小二日常会大量投入在体验洞察分析中,旨在通过用户的声音数据结合交易、物…

sdut 数字三角形问题

数字三角形问题 Time Limit: 1000MS Memory Limit: 65536KBSubmit Statistic DiscussProblem Description 给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。对于给定的由n行…

SSD( Single Shot MultiBox Detector)关键源码解析

SSD(SSD: Single Shot MultiBox Detector)是采用单个深度神经网络模型实现目标检测和识别的方法。如图0-1所示,该方法是综合了Faster R-CNN的anchor box和YOLO单个神经网络检测思路(YOLOv2也采用了类似的思路,详见YOLO…

YOLO升级版:YOLOv2和YOLO9000解析

论文笔记:YOLO9000: Better, Faster, Stronger;官方网站 评论:YOLO是基于深度学习方法的端到端实时目标检测系统(YOLO:实时快速目标检测)。YOLO的升级版有两种:YOLOv2和YOLO9000。作者采用了一系…

解读Batch Normalization

【活动】Python创意编程活动开始啦!!! CSDN日报20170424 ——《技术方向的选择》 程序员4月书讯:Angular来了!解读Batch Normalization 2016-02-23 16:03 5262人阅读 评论(1) 收藏 举报 本文章已收录于&#xf…

SSD+caffe︱Single Shot MultiBox Detector 目标检测+fine-tuning(二)

承接上一篇SSD介绍:SSDcaffe︱Single Shot MultiBox Detector 目标检测(一) 如果自己要训练SSD模型呢,关键的就是LMDB格式生成,从官方教程weiliu89/caffe来看,寥寥几行code,但是前面的数据整理…

sdut 双向队列(STL)

deque<ll>q;//定义一个双向队列q&#xff0c;类型为long long q.push_front(a);//将a从队首插入队列 q.push_back(a);//将a从队尾插入队列 q.pop_front();//队首弹掉一个元素 q.pop_back();//队尾弹出一个元素 aq.front();//返回队首元素 aq.back();//返回队尾元素 aq.si…

pip install scikit-image on windows 失败 解决方案

到官网下载包 http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikit-image 我们下载 scikit_image‑0.13.0‑cp35‑cp35m‑win_amd64.whl 也可到我的CNDS下载 安装时会出现一下错误 scikit_image-0.13.0-cp34-none-win_amd64.whl is not a supported wheel on this platform…

Caffe训练源码基本流程

苏的专栏 致力于学习计算机视觉、模式识别、机器学习、深度学习相关技术&#xff1a;&#xff1a;&#xff1a;&#xff1a;希望结识更多同道中人。 QQ&#xff1a;2816568984 微信&#xff1a;Suc1011 目录视图 摘要视图 订阅 【活动】2017 CSDN博客专栏评选 【评论送书】…

ubuntu16.04下安装opencv3.2版本

1、下载OpenCV的源码 OpenCV官网上有linux版本的源码包可以下载&#xff0c;不过最好是从git上下载&#xff0c;这样可以保证下载得到的是最新的代码&#xff1a;1 wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.2.0.zip 2 unzip opencv.zip 2、编译安装…

windows 静态IP设置

1.打开cmd&#xff0c;输入ipconfig 记录 IP address 子网掩码 网关 打开 wlan 属性 选中一个网络右键 “属性” 设置 ipv4&#xff0c;选择“使用下面的IP地址” 对应填写 ip地址 子网掩码 网关 tips&#xff1a;DNS建议和网关一样

window 远程linux

1.我们需要在Linux安装ssh服务 sudo apt-get install openssh-server 2.然后开启ssh服务 sudo /etc/init.d/ssh start 3.在window上安装PUTTY 下载网址 4.填写Linux ip 查看ip: 在Linux输入&#xff1a;ifconfig 5.然后填写登陆Linux的账户名和密码 大功告成。。。。。…

赫夫曼编码长度计算问题?

例题&#xff1a;一组字符(a,b,c,d)在文中出现的次数分别为(7,6,3,5),字符&#xff07;d&#xff07;的哈夫曼编码的长度为&#xff1f; 题解&#xff1a; 首先构造huffman树 每一步都将所有数字排序 方法如下: 1: 3 5 6 7 2: 6 7 8 / \ 3 5 3: 8 13 / \ / \ 3 5 6 7 4: 21 /…

windows + cmake + vs2019 编程

1.安装minGW64 2.安装cmake 3.安装vs2019 4.组建代码文件结构&#xff1a; 5.在build 文件下打开git bash&#xff0c;执行一下指令 cmake .. -G"Visual Studio 16 2019" tips( vs2017 对应 cmake .. -G"Visual Studio 15 2017" ) cmake 模板…

所感

记住别太善良了&#xff0c;别太大方了&#xff0c;也别太能干了&#xff0c;时间久了人家会觉得&#xff0c;你做的一切都是应该的。即使有一天你撑不住&#xff0c;哭了累了&#xff0c;也没人心疼你。 因为在他们眼里这都是你愿意的。有时候心眼也别太好了不要什么事都为别人…

享受孤独

今天看见网易云音乐一个 有趣的活动。。。突发其感参与了评论“孤独”这个话题&#xff1a;

使自己的注意力集中方法

英国Kent大学最近有一篇文章对注意力做出了详尽的分析&#xff0c;关于如何保持专心养成好习惯的&#xff0c;其中包括了如下几点建议&#xff1a; 养成好习惯&#xff1a;养成在固定时间、固定地点专心学习工作的好习惯。如果可能&#xff0c;在进入学习或者工作状态前做一些小…

PCL “(”:“::”右边的非法标记 和 E2512 功能测试宏的参数必须是简单标识符

PCL “(”:“::”右边的非法标记 解决方法&#xff1a; 项目属性 ——> C/C ——> 预处理器 ——> 预处理器定义 (此处添加预定义编译开关 NOMINMAX&#xff09; E2512 功能测试宏的参数必须是简单标识符 解决方法&#xff1a; 将SDL 设置为否。

普通本科生应该坚持ACM吗?知乎

这是本人当初学ACM有疑惑从知乎看见这一篇文章&#xff0c;从中解决了自己的疑惑&#xff0c;虽然是粘贴复制&#xff0c;但是我觉得我们可以从里面找出自己想要的答案&#xff01; 非211一本学校&#xff0c;软件工程专业。学校搞ACM的水平不高&#xff0c;最好的大概就是区域…