SLS新版告警-多数据源协同

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
对象存储 OSS,内容安全 1000次 1年
简介: 阿里云SLS作为一站式的可观测性平台,用户将日志数据,时序数据,Trace数据都存储在SLS;SLS提供统一的查询分析语言,支持完整的SQL 92语法;SLS新版告警完整支持SLS的查询分析语法,基于此,可以配置常见的如关键词告警,同环比告警,网址错误监控,流量急跌或暴涨监控;在新版告警中,可以对多个数据源进行监控,并且支持多数据源的间的协同监控。支持常见的左联,右联,内联,外联,左斥,右斥等集合操作,可以使用在比如白名单,黑名单监控场景。

前言

阿里云SLS作为一站式的可观测性平台,用户将日志数据,时序数据,Trace数据都存储在SLS;SLS提供统一的查询分析语言,支持完整的SQL 92语法;SLS新版告警完整支持SLS的查询分析语法,基于此,可以配置常见的如关键词告警,同环比告警,网址错误监控,流量急跌或暴涨监控;在新版告警中,可以对多个数据源进行监控,并且支持多数据源的间的协同监控。支持常见的左联,右联,内联,外联,左斥,右斥等集合操作,可以使用在比如白名单,黑名单监控场景。

告警监控

image.png

告警监控可以对多个数据源进行监控:通过选择不同的数据源类型(日志存储,时序存储,资源数据),使用不同的查询分析语句,可以得到不同的查询结果,每个查询结果可以看出一个结果集,对多个结果集之间可以进行集合操作,包括左联,右联,全联,内联,外联,左斥,右斥等,也是本文介绍的重点。

在SLS新版告警的查询统计时,最多可以设置三个查询,两个之间可以进行集合操作。

image.png

监控系统对于监控规则中的分组评估和触发条件都是基于集合操作的结果进行评估,并非针对某一个查询结果进行评估。

设置单个查询时,集合操作结果即为单个查询的结果,可以理解为对查询结果进行评估。

集合操作类型及其使用场景

SLS集合操作主要包括笛卡尔积,不合并,拼接,左联,右联,全联,左斥,右斥等操作,接下来会对每个集合操作进行简单的介绍,并介绍其使用场景。

以下的介绍场景皆为两个操作结果之间的集合操作,当监控中有三个查询时,会先对前两个结果进行集合操作,得到的结果在跟第三个结果进行集合操作

笛卡尔积

image.png

笛卡尔积在数学中是一种集合运算,在告警监控中,两个查询结果,第一个查询结果为m条,第二个查询结果为n条,进行笛卡尔积集合操作后的结果将有m*n条数据;监控规则也将会对这m*n条数据进行分组评估和触发条件评估。

场景

假设同时对oss访问日志和nginx访问日志进行监控,每15分钟统计一次oss的5xx错误和slb的5xxx错误,当错误总数达到1000时进行告警。

如图,对于两条查询可以使用笛卡尔积进行集合操作,然后在触发条件中,可以对两个查询后的结果进行联合判断。

image.png

告警监控规则

规则名称:

15/64

oss与nginx错误联合监控

检查频率:

固定间隔

分钟

15

查询统计:

添加删除

>500ISELECTcount1)asosSerrcnt

status

集合操作

笛卡尔积

5分钟(相对)

?

?

添加删除

SELECT

>二500

status

count(1)asnginx_err-count

15分钟(相对)

不分组

分组评估:

有数据匹配

触发条件:

oss_errcnt+nginxerrcount>1000

告警严重度:

添加

集合操作结果示意图,蓝色表示集合操作后的结果

image.png

oSS_err_cnt

890

nginx_err.count

OSSerrcnt

30

890

nginx_err_.count

30


不合并

image.png

不合并表示集合操作结果只包含前一个查询结果,舍弃后一个查询结果,注意,这里只是在规则进行评估时舍弃后一个查询结果,也就是分组评估和触发条件不会用到后一个查询结果,但是后一个查询结果还是可以在内容模板变量中被引用。

场景

监控nginx访问日志时,每15分钟的5xx错误次数大于10次时触发告警,并且在告警内容中列出具体出错的域名信息;这里可以把需求分为两部分,第一部分是评估要用到的条件,5xx错误次数大于10,第二部分是告警内容列举具体错误的域名信息;可以将第一部分用错误总次数作为查询条件,第二个查询使用域名错误作为查询条件。

下面的例子这里触发条件设置为nginx_err_cnt > 10,在触发条件中不可以引用host和err_cnt,因为在评估时不会对后一个查询结果进行评估。

image.png

如果想要引用第二个查询结果,可以在内容模板中使用${results[1].raw_results}来引用第二个查询的结果。

集合操作示意图,蓝色会集合操作结果

image.png

拼接

image.png

拼接

集合B中的数据添加到集合A中,根据字段对齐.

A+B

拼接是直接将后一个操作结果直接合并到前一个操作结果,按照字段进行对齐,对于重复的数据不进行排重处理。

场景

假设有两个logstore分别用来存储北京和上海的nginx访问日志,需要对两地的nginx 5xx同时进行监控,因为两个logstore的结构一致,直接将两个5xx的错误结果进行拼接,可以实现同时对两地nginx的错误进行监控。

如下例子中,第一个查询是北京的nginx访问日志,第二个查询是上海的nginx访问日志,这里直接设置触发条件err_cnt > 10,可以对北京和上海的nginx访问日志同时进行监控。

image.png

告警监控规则

北京上海nginx5xx错误监控

规则名称:

17/64

固定间隔

分钟

检查频率:

15

查询统计:

添加删除

SELECThostcountrcGU

500

BY

status

host

>三

拼接

15分

集合操作

(相对)

三个

添加删除

SELECThost,count)a

>500

1aserr-cntGROUPBYhO

host

status

15分钟(相对)

分组评估:

不分组

有数据匹配

errcnt>10

触发条件:

告警严重度:

添加

集合操作示意图

image.png

host

errcnt

host

errcnt

60

host1

60

host1

55

host2

55

host2

host

70

errcnt

hosta

70

hosta

45

hostb

45

hostb

内联

image.png

内联类似数据库中的inner join操作,对于两个查询结果,会根据连接的字段,找出两个查询结果中的公共部分。

场景

比如在oss访问日志的监控中,可以对oss访问的5xx错误数进行监控,在资源表中可以存储bucket对应的环境类型,假如我们只需要对资源表中对应的bucket进行监控,可以使用内联操作,内联的条件是第一个结果的bucket等于第二个结果的bucket。

image.png

告警监控规则

规则名称:

19/64

ossbucket5xxx错误监控

固定间隔

检查频率:

分钟

15

查询统计:

添加删除

http-status-500SELECTbuCkecuU

15分中(相对)

集合操作

添加

内联

$0.bucket

$1.bucket

三个

添加删除

bucket环境信息(user.bucketenv):bucket,e

分组评估:

不分组

有数据

触发条件:

这里用到了资源数据,我们可以在告警中心-资源数据中,自定义一个资源数据,可以定义其字段和类型,并且批量添加数据

image.png

数据管理(user.bucket_env)

bucket环境信息

批量添加

添加

创建时间1

上次修改时间J

操作

bucket环境(env)

bucket名称(bucket)

2021-06-0618:57:29

2021-06-0618:57:29

修改无除

test

bucket_03

修改刑除

prod

bucket.04

2021-06-0618:57:29

2021-06-0618:57:29

修改别除

2021-06-0618:57:29

bucket_02

2021-06-0618:57:29

prod

每页星示:1020150

总数:3

下一页>

<上一页

关闭

集合操作示意图,蓝色表为集合操作结果

image.png

bucket

errcnt

bucket_01

1600

bucket02

1550

bucket

errcnt

env

1470

bucket03

bucket_02

1550

prod

bucket

env

bucket_03

1470

test

bucket_02

prod

bucket03

test

bucket04

prod


左联

image.png

左联类似数据的left join,一般用在前一个查询结果数据字段不足,用后一个查询结果来进行补充的场景。

场景

在oss的监控中,把oss的bucket的描述信息存在资源数据中,包括字段bucket和desc;oss的错误监控查询分析结果包含bucket和err_cnt,使用左联后,连接条件是bucket相同,集合操作结果将包含bucket, err_cnt, desc(如果资源表中没有出现的bucket,集合操作结果也不会有desc字段)。

image.png

告警监控规则

规则名称:

ossbucket5xxx错误监控

19/64

固定间隔

检查频率:

分钟

15

查询统计:

添加删除

count(1)aserr-cntGROUPby

http-status>-500SELECTbucKe

15分钊(相对)

左联

集合操作

$0.bucket

添加

$1.bucket

二..

3个

泰加删除

bucket描述信息(user.bucketdesc):bucketde

分组评估:

不分组

有数据

触发条件:

告警严重度:

添加

集合操作示意图,蓝色的为集合操作结果。

image.png

bucket

errcnt

bucket01

1600

bucket

desc

err_cnt

bucket.02

1550

无无天

bucket01

1600

1470

bucket_03

bucket02

1550

1470

forugcteam

bucket03

bucket

desc

forugcteam

bucket_03

forskuteam

bucket04

注意,上述触发条件选择的是会有数据,这里如果想对蓝色结果进行引用可以使用内容模板变量${fire_results},表示所有的满足触发条件的结果。

右联

image.png

右联为左联的相反操作,这里不再赘述,左联两个操作结果调换位置,即为右联。

全联

image.png

全联表示集合A和集合B相互补充信息。

场景

比如在OSS 5xx错误监控中,在5xx错误次数监控的同时,也希望可以看到5xx访问的uv,可以在配置监控规则时使用全联操作,连接条件是bucket相同。

image.png

集合操作示意图:

image.png

bucket

err_cnt

1600

bucket01

bucket

errcnt

uv

1600

bucket_01

1550

bucket02

1470

bucket03

1550

bucket_02

32

1470

bucket03

bucket

uv

40

bucket_04

32

bucket03

50

bucket04

左斥

image.png

左斥可以理解为前一个查询的结果,排除第二个查询的结果,常用在一种黑名单的操作中,左边的结果,第二个查询结果作为黑名单,第一个查询结果作为评估结果。

场景

比如在OSS 5xx错误监控中,某些bucket是测试bucket,并不需要对齐进行监控,这时可以在资源数据中增加bucket黑名单,将测试bucket填进去,使用左斥操作即可实现黑名单效果。

image.png

告警监控规则

规则名称:

26/64

ossbucket5xx错误次数监控-排除黑名单

分钟

固定间隔

检查频率:

15

查询统计:

添加删除

http_statusz-500SELECTbuckecurn

集合操作

左斥

添加

$0.bucket

$1.bucket

(相对)

15分售

三个

bucket黑名单(user.demo.bucketblacklist):bucketdc

添加删除

分组评估:

不分组

有数据

触发条件:

告警严重度:

添加


集合操作示意图:蓝色表示集合操作结果

image.png

bucket

errcnt

1600

bucket_01

bucket

errcnt

bucket02

1550

bucket_01

1600

1470

bucket_03

bucket02

1550

desc

bucket

bucket03

fordeyvteam

bucket04

fortestteam

右斥

image.png

右斥是左斥的相反操作,在左斥中将两个操作结果互换位置,即为右斥。


注意事项

  • 时序存储进行查询时,使用promql_query(string)、promql_query_range(string, string)函数查询时,返回的字段包括metric, labels, time, value四个字段,其中labels为map类型,在配置监控规则时,会将labels展开,例如labels值为{"host":"xxxx", "ip": "192.168.1.102"},metric值为cpu_util,则查询结果字段有metric, labels, time, value, host, ip 六个字段(该规则只适用用监控规则配置时)。
  • 使用查询分析语句时,单个查询和分析的结果超过1000条时,只会保留前1000条数据,用于集合操作,当存在三个查询和分析操作且集合操作未选择不合并时,只选取每个查询和分析结果中的前100条数据。
  • 集合操作中,会默认对每个查询结果的字段加上$x.前缀,比如第一个查询结果的字段都会加上$0.前缀,第二个查询结果的字段都会加上$1.前缀, x可以取值0,1,2。以下情况可以在触发条件和分组评估字段中省略前缀:
  • 第一个查询的所有字段都可以省略前缀$0.。
  • 只有一个查询时,可以省略字段前缀$0.。
  • 有两个查询时,两个查询结果中的字段完全不同时,两个查询结果字段分别可以省略前缀$0.和$1.,如果三个查询中的字段也完全不同,三个查询结果中的字段可以省略前缀。
  • 有两个查询时,两个查询结果的字段有重复,且重复字段用于集合操作(左联,右联,内联,外联,左斥,右斥)的连接字段,且连接运算符是相等时,可以省略字段重复字段名;如果连接运算符不是相等时,第二个查询结果中的重复字段保留前缀。
  • 当有三个查询时,会先计算前两个查询的集合操作结果,然后拿这个集合操作结果跟第三个查询进行集合操作,是否去掉前缀按照两个查询的方式进行。

参考

  • 多集合操作机制【链接
  • 评估表达式语法【链接
  • 创建资源数据【链接

进一步参考


最后,如果您还想了解更多智能运维前沿资讯,欢迎您报名参加【数智创新行·智能运维专场】。

6月25日|上海·西岸国际人工智能中心

数智创新行上海站·智能运维专场

阿里云将带来云原生智能运维解决方案,满足海量事件有效感知、高效响应,可观测数据统一分析、故障定位,以及基于AI的异常检测等需求,助力企业构建自己的运维平台,成为开发、运维人员高效可靠的助手。

扫描海报二维码或点击下方链接报名, 期待您一起开启智能运维新时代!

https://www.aliyun.com/page-source//developer/special/osssalon

智能运维专场图片.jpg

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
消息中间件 存储 运维
Zabbix与ELK整合实现对安全日志数据的实时监控告警
Zabbix与ELK整合实现对安全日志数据的实时监控告警
Zabbix与ELK整合实现对安全日志数据的实时监控告警
|
11天前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
|
5月前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之sls日志告警调用函数计算,出现抛出的结果异常,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
存储 运维 Serverless
函数计算产品使用问题之日志告警不生效,一般是由于什么造成的
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
Web App开发 存储 监控
日志服务之告警接入与管理
本教程介绍如何使用日志服务接入NGINX模拟数据,并配置告警规则来对NGINX访问错误进行监控。
|
6月前
|
JSON Prometheus Cloud Native
Grafana 系列 -Loki- 基于日志实现告警
Grafana 系列 -Loki- 基于日志实现告警
|
监控 数据库
136 日志监控告警系统案例(代码实现)
136 日志监控告警系统案例(代码实现)
120 0
|
监控
135 日志监控告警系统案例(数据模型设计)
135 日志监控告警系统案例(数据模型设计)
170 0
|
消息中间件 监控 关系型数据库
134 日志监控告警系统案例(功能架构分析)
134 日志监控告警系统案例(功能架构分析)
149 0
|
分布式计算 监控 前端开发
133 日志监控告警系统案例(需求分析)
133 日志监控告警系统案例(需求分析)
103 0

相关产品

  • 日志服务