阿里云SLS作为一站式的可观测性平台 用户将日志数据 时序数据 Trace数据都存储在SLS SLS提供统一的查询分析语言 支持完整的SQL 92语法 SLS新版告警完整支持SLS的查询分析语法 基于此 可以配置常见的如关键词告警 同环比告警 网址错误监控 流量急跌或暴涨监控 在新版告警中 可以对多个数据源进行监控 并且支持多数据源的间的协同监控。支持常见的左联 右联 内联 外联 左斥 右斥等集合操作 可以使用在比如白名单 黑名单监控场景。
告警监控告警监控可以对多个数据源进行监控 通过选择不同的数据源类型 日志存储 时序存储 资源数据 使用不同的查询分析语句 可以得到不同的查询结果 每个查询结果可以看出一个结果集 对多个结果集之间可以进行集合操作 包括左联 右联 全联 内联 外联 左斥 右斥等 也是本文介绍的重点。
在SLS新版告警的查询统计时 最多可以设置三个查询 两个之间可以进行集合操作。
监控系统对于监控规则中的分组评估和触发条件都是基于集合操作的结果进行评估 并非针对某一个查询结果进行评估。
设置单个查询时 集合操作结果即为单个查询的结果 可以理解为对查询结果进行评估。
集合操作类型及其使用场景SLS集合操作主要包括笛卡尔积 不合并 拼接 左联 右联 全联 左斥 右斥等操作 接下来会对每个集合操作进行简单的介绍 并介绍其使用场景。
以下的介绍场景皆为两个操作结果之间的集合操作 当监控中有三个查询时 会先对前两个结果进行集合操作 得到的结果在跟第三个结果进行集合操作
笛卡尔积笛卡尔积在数学中是一种集合运算 在告警监控中 两个查询结果 第一个查询结果为m条 第二个查询结果为n条 进行笛卡尔积集合操作后的结果将有m*n条数据 监控规则也将会对这m*n条数据进行分组评估和触发条件评估。
场景假设同时对oss访问日志和nginx访问日志进行监控 每15分钟统计一次oss的5xx错误和slb的5xxx错误 当错误总数达到1000时进行告警。
如图 对于两条查询可以使用笛卡尔积进行集合操作 然后在触发条件中 可以对两个查询后的结果进行联合判断。
集合操作结果示意图 蓝色表示集合操作后的结果
不合并表示集合操作结果只包含前一个查询结果 舍弃后一个查询结果 注意 这里只是在规则进行评估时舍弃后一个查询结果 也就是分组评估和触发条件不会用到后一个查询结果 但是后一个查询结果还是可以在内容模板变量中被引用。
场景监控nginx访问日志时 每15分钟的5xx错误次数大于10次时触发告警 并且在告警内容中列出具体出错的域名信息 这里可以把需求分为两部分 第一部分是评估要用到的条件 5xx错误次数大于10 第二部分是告警内容列举具体错误的域名信息 可以将第一部分用错误总次数作为查询条件 第二个查询使用域名错误作为查询条件。
下面的例子这里触发条件设置为nginx_err_cnt 10 在触发条件中不可以引用host和err_cnt 因为在评估时不会对后一个查询结果进行评估。
如果想要引用第二个查询结果 可以在内容模板中使用${results[1].raw_results}来引用第二个查询的结果。
集合操作示意图 蓝色会集合操作结果
拼接拼接是直接将后一个操作结果直接合并到前一个操作结果 按照字段进行对齐 对于重复的数据不进行排重处理。
场景假设有两个logstore分别用来存储北京和上海的nginx访问日志 需要对两地的nginx 5xx同时进行监控 因为两个logstore的结构一致 直接将两个5xx的错误结果进行拼接 可以实现同时对两地nginx的错误进行监控。
如下例子中 第一个查询是北京的nginx访问日志 第二个查询是上海的nginx访问日志 这里直接设置触发条件err_cnt 10 可以对北京和上海的nginx访问日志同时进行监控。
集合操作示意图
内联内联类似数据库中的inner join操作 对于两个查询结果 会根据连接的字段 找出两个查询结果中的公共部分。
场景比如在oss访问日志的监控中 可以对oss访问的5xx错误数进行监控 在资源表中可以存储bucket对应的环境类型 假如我们只需要对资源表中对应的bucket进行监控 可以使用内联操作 内联的条件是第一个结果的bucket等于第二个结果的bucket。
这里用到了资源数据 我们可以在告警中心-资源数据中 自定义一个资源数据 可以定义其字段和类型 并且批量添加数据
集合操作示意图 蓝色表为集合操作结果
左联类似数据的left join 一般用在前一个查询结果数据字段不足 用后一个查询结果来进行补充的场景。
场景在oss的监控中 把oss的bucket的描述信息存在资源数据中 包括字段bucket和desc oss的错误监控查询分析结果包含bucket和err_cnt 使用左联后 连接条件是bucket相同 集合操作结果将包含bucket, err_cnt, desc 如果资源表中没有出现的bucket,集合操作结果也不会有desc字段 。
集合操作示意图 蓝色的为集合操作结果。
注意 上述触发条件选择的是会有数据 这里如果想对蓝色结果进行引用可以使用内容模板变量${fire_results} 表示所有的满足触发条件的结果。
右联右联为左联的相反操作 这里不再赘述 左联两个操作结果调换位置 即为右联。
全联全联表示集合A和集合B相互补充信息。
场景比如在OSS 5xx错误监控中 在5xx错误次数监控的同时 也希望可以看到5xx访问的uv 可以在配置监控规则时使用全联操作 连接条件是bucket相同。
集合操作示意图
左斥左斥可以理解为前一个查询的结果 排除第二个查询的结果 常用在一种黑名单的操作中 左边的结果 第二个查询结果作为黑名单 第一个查询结果作为评估结果。
场景比如在OSS 5xx错误监控中 某些bucket是测试bucket 并不需要对齐进行监控 这时可以在资源数据中增加bucket黑名单 将测试bucket填进去 使用左斥操作即可实现黑名单效果。
集合操作示意图 蓝色表示集合操作结果
右斥右斥是左斥的相反操作 在左斥中将两个操作结果互换位置 即为右斥。
作者 阿里云技术运营望宸 技术实践的门槛不仅在于应用上线后各类问题的排查难度 ...
据国际数据公司(IDC)近日发布的《中国云运营服务市场(2020上半年)跟踪》报告显示...
11月30日,由工业和信息化部、北京市人民政府共同主办的2020年中国网络安全产业...
ssd 云服务器 是什么?就是存储模式选择为ssd超高速 云盘 的 云服务器 。ssd超高...
办网站必须要备案吗?是的,使用中国大陆境内的服务器开办网站,必须先办理 网站...
阿里云与西奥电梯联合共同打造西奥可信电梯物联网平台,通过工业互联网的规则引...
今天,猿妹要和大家介绍Python程序员在2021年最不应该错过的优秀VS Code扩展: 1...
1.爱上一个人跟拉屎一样简单,忘记一个人跟吃屎一样难。 2.大姨妈是吐血鬼,卫...
private Map Character, Set Character constructGraph(String[] words) { Map C...
作者:朱永生 什么是企业搜索 企业搜索,顾名思义,就是企业使用的搜索服务或者...