专门做ppt的网站叫什么,海淀网站建设公司,网页制作图片居中对齐,广州增城发布背景
随着使用SLS告警越来越深入#xff0c;有些用户的行动策略会配置的特别复杂#xff0c;有些时候可以让用户通过创建多个行动策略来进行一定的精简#xff0c;但是在一些场景下#xff0c;用户是无法创建多个行动策略的。例如用户想要通过SLS来统一管理其各个监控系统…背景
随着使用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 (fmtsls 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(typesms, users[user1], groups[], oncall_groups[], receiver_typestatic, external_url, external_headers{}, template_idsls.builtin.cn, check_quotatrue, periodany)stop()
if alert.labels.appName app1:fire(typeemail, users[user2], groups[], oncall_groups[], receiver_typestatic, external_url, external_headers{}, template_idsls.builtin.cn, check_quotatrue, periodany)stop()
fire(typewebhook_integration, integration_typedingtalk, webhook_iduser3, template_idsls.builtin.cn, periodany)
创建好了以后在控制台上点击编辑创建好的行动策略如下图所示。通过SDK创建的行动策略没有UI信息但是依然可以正常运行。 上述的行动策略对应的有UI信息的行动策略如下图所示。 使用动态接收人
SLS提供了动态接收人功能可以通过Webhook服务设置告警通知的动态接收人。该Webhook服务办不仅可以按照SLS的用户模型返回需要通知告警的联系人方式还可以进行告警的动态分派实现与行动策略相同的能力不仅如此由于行动策略无法支持按照特殊内容例如告警的fire_results字段进行动态分派因此在这种情况下就必须使用动态接收人的方式了。
如下图所示使用动态接收人后行动策略就只需要一个行动节点从而变得简洁。 原文链接
本文为阿里云原创内容未经允许不得转载。