SLS新版告警入门-统一的查询分析语法

本文涉及的产品
对象存储 OSS,20GB 3个月
云备份 Cloud Backup,100GB 3个月
文件存储 NAS,50GB 3个月
简介: SLS新版告警支持多种监控目标,如SLS的日志存储,时序存储;也支持对外部系统如Promethus,Grafana,Zabbix产生的告警进行管理;在对SLS的存储进行监控时,用户可以自定义告警监控规则或者使用内置的告警规则。自定义告警监控规则主要包括监控目标,触发条件,行动配置等。本文主要介绍在创建自定义告警规则时,如何使用统一的查询分析语法来查询并定义监控目标。

前言

SLS新版告警支持多种监控目标,如SLS的日志存储,时序存储;也支持对外部系统如Promethus,Grafana,Zabbix产生的告警进行管理;在对SLS的存储进行监控时,用户可以自定义告警监控规则或者使用内置的告警规则。自定义告警监控规则主要包括监控目标,触发条件,行动配置等。本文主要介绍在创建自定义告警规则时,如何使用统一的查询分析语法来查询并定义监控目标。

image.png

各类设备/系统

VariousEquipments)

叫眶

日志存储

告警管理

通知(行动)管理

告警监控

(Logstore)

(AlertCheck/Monitor)

(ActionManagement)

(AlertManagement)

CA

个!

AI

SearchSQL

检查恢复协同分组评估

升级用户组节假日

分派

抑制去重静默

路由

时序存储

个高

(Metricstore

编排资源数据规则库ML巡检

代班WebHK

值班组轮岗化

合并

事务管理

处理人

PromOLSQLAI

N

链路中心规则中心

语音钉钉短信邮件

PrometheusAlert

开放告警

(AIertHub)

GrafanaAlert

9

运维

运营

研发

安全

各类监控系统

(ItOps

(BizOps)

(SecOps)

(DevOps)

ariousMonitoring)

查询分析语法概览

SLS支持可观测性的Log,Metric,Trace的存储,对于不同类型的存储,SLS支持使用统一的查询分析语法来查询分析数据。本文主要介绍下查询日志,查询时序,机器学习等语法。

配置索引

对于SLS中的数据日志服务采用半结构化的数据模式定义一条日志,包含日志主题(Topic)、时间(Time)、内容(Content)、来源(Source)和标签(Tags)五个数据域,其中内容数据域记录了日志的具体内容,有一个或多个内容项组成,每一个内容项为一个键值对(Key:Value)。

对于日志内容中的键值对,只有配置索引后,才能进行查询和分析操作,索引类型主要包括全文索引和字段索引。其区别如下

索引类型 说明
全文索引 日志服务根据您设置的分词符将整条日志拆分成多个词并构建索引。在查询时,字段名称(KEY)和字段值(Value)都是普通文本。例如查询语句error,表示查询包含error关键字的日志。
字段索引 配置字段索引后,您可以指定字段名称和字段值(Key:Value)进行查询,缩小查询范围。例如查询语句level:error,表示查询level字段值包含error的日志。

如果您要使用分析功能,必须配置字段索引且开启对应字段的统计功能。开启统计功能不会产生额外的索引流量和索引存储空间。


在SLS控制台查询页面,可以配置索引,如下示例是nginx的日志索引配置,包括日志中的host,http_referer等字段的索引。

image.png

查询分析

Logstore名称

ngnx-acoess-bg

日志聚类

全文索引

大小写敏感

包含中文

分词符

":0007@&OAnlt

指定字段查询

自动生成索引

开启查询

字段名称

别除

开启统计

包含中文

分词符

别名

类型

大小写敏感

bodybytessent

bodybytessent

long

KXXXXXXXXXX

bytessent

long

bytessent

long

connection

connection

long

connectionrequests

connectionrequests

long

contentlength

contentlength

0000o

":20007@&O/Anlttr

contenttype

text

contenttype

"0007@&OAnity

host

text

host

":0007@o/nity

text

hostname

hostname

":20007@&/Anittr

httpreferer

httpreferer

text

http_user_agent

http-user_agent

text

:20007C&O/nltv

httpxforwarded_for

httpx_forwarded_for

text

":000@/Anlttr

查询分析语法

基本语法

查询语句|分析语句

SLS的查询分析语法包含两部分,一部分是查询语句,一部分是分析语句,两者之间用小竖线(|)来分隔,查询语法为SLS专有语法,可以参考查询语法;分析语句支持标准的SQL92语法并且包含SLS增强的函数,可以参考分析概述。查询语句和分析语句区别如下:

语句类型 说明
查询语句 查询语句用于指定日志查询时的过滤规则,返回符合条件的日志。

查询语句可以为关键词、数值、数值范围、空格、星号(*)等。 如果为空格或星号(*),表示无过滤条件。

分析语句 分析语句用于对查询结果或全量数据进行计算和统计。


比如需要查询一个nginx的5xx错误的次数,可以使用如下查询语句,其中查询语句用查询status超过500的日志,分析语句是一条标准的SQL聚合语句。

status >=500|SELECTcount(1)as err_cnt from log


告警监控查询场景

SLS新版告警自定义告警规则完全支持SLS的查询分析语法,通过SLS的查询分析语句,可以根据业务和监控需求,查询出需要监控的数据,然后设置相应的触发条件,来触发告警。

场景1:查询语句

比如在监控Nginx日志时,需要查询5xx的错误日志,并且想要把这些错误相关的日志通过告警发出来,我们可以直接使用status >= 500,查询出来的结果包含错误的request_uri, host,request_method等,这里的字段包含所有的日志索引字段。

image.png

status>-500

0

45分45

38分45秒

39分45秒

44分45秒

40分45秒

43分45秒

42分45秒

41分45秒

37分45秒

36分54秒

日志总条数:21查询状态:结果精确

日志聚类

原始日志

统计图表

表格

时间

原始

业向

换行

快速分析

g

摆宋字段

106-2516:50:53

0127.0.0.1

1624611068nginxaccesso

bodybytessent:2721

bodybvtessent

host:oss.aliyun.com

host

http-referer:wwo.ju.mock.com

时m3.mmto

httpreterer

http-x_forwarded_tor:110.196.41.22

httpuseragent

remote-addr:123.73.236248

remoteuser:9krj7

httpxforwarded_for

reguestlength:4262

remoteaddr

reguestnethod:GET

remote_user

request-time:12

requesturt:/request/path-i/file-5

requestlength

status:501

requestmethod

timeLocal:25/Jun/2021:08:50:53

upstrean_response-time:0.69

requesttime

根据上面的查询语句,我们可以直接另存为新版告警,触发条件设置为有数据。告警监控在评估时如果查询到有5xx的错误,就会触发告警。在内容模板中引用${fire_results}或者${fire_results_as_kv}即可展示错误信息。

image.png

规则名称:

13/64

Nginx5xx错误监控

分钟

检宣频率:

固定间隔

15

Q

查询统计:

添加

500

status

15分钟(相对)

不分组

分组评估:

?

有数据

触发条件:

场景2:查询语句|分析语句

跟场景1中的例子相似,我们可能在告警中不需要把每个字段都通知出来,只需要最关键的字段比如host,request_method,request_uri,status。这时候我们可以机上分析语句筛选出特定的字段

status >=500|SELECT host, request_method, request_uri, status

查询结果示例如下

image.png

status>500SELECTHotmeu

3.2

56分15秒

50分15秒

49分17秒

54分15秒

53分15秒

51分15秒

52分15秒

55分15秒

日志总条数:21查询状态:结果精确扫描行数:21查询时间:113ms结果行

原始日志

统计图表

日志聚类

123

年:

下载日志

添加到仪表盘

创建ScheduledSQL

预览图表

requesturl

host

requestmethod

status

Q

POST

lrequest/path-2/file-2

501

sls.alilyun.com

POST

501

lrequest/path-o/rile-4

www.allyun.com

GET

500

oss-test.aliyun.com

lrequest/path-o/file-9

GET

500

lrequest/path-3/ile-7

www.aliyun.com

GET

501

request/path-o/file-8

oss-test.aliyun.com

GET

500

lreguest/path-2/file-8

www.aliyun.com

GET

501

lrequest/path-o/file-8

oss.aliyun.com

GET

500

sls.allyun.com

lrequest/path-2/rile-2

GET

501

test.aliyun.com

lrequest/path-1/file-7

在配置告警时,触发条件同样选择有数据在内容模板中引用${fire_results}或者${fire_results_as_kv}即可展示select后的字段信息。

image.png

规则名称:

13/64

Nginx5xx错误监控

固定间隔

分钟

检查频率:

15

查询统计:

添加

status>500SELECThotm

15分钟(相对)

分组评估:

不分组

触发条件:

有数据

场景3:时序数据监控

对于时序数据,SLS支持两种查询方式,SQL查询分析和SQL + PromQL查询分析

SQL查询分析

使用SLS时序存储接入了主机监控。现在查询主机在过去5分钟内的最大和平均CPU使用率,可有使用SQL查询分析,例句如下:

*|SELECT element_at(__labels__,'hostname')as host_name, max(__value__)as max_cpu_util, avg(__value__)as avg_cpu_util
FROM"ecs-metric.prom"WHERE __name__ ='cpu_util'groupby element_at(__labels__,'hostname')

查询结果如图,在配置告警规则时,触发条件可以配置为有数据匹配,条件写avg_cpu_util > 80,即可实现对平均使用率超过80%的主机进行监控,可以使用${fire_results}或者${fire_results_as_kv}引用平均使用率高于80%的主机数据。

image.png

ecs-metric

1*SELECT

stCLemnteCiabetsh

asavg-cpu-util

123

98

添加到仪表盘

下载日志

创建ScheduledSQL

预览图表

Q

Q

avg_cpuutil

hostname

max_cpuutil

Q

569.1

66.61

hostnameo

62.93

484.1

hostname1

hostname2

485.0

94.99733333333333

46.004

261.7

hostname4

58.43

31.197333333333338

hostname3

51.349333333333337

hostname5

244.3

SQL+PromQL方式

SLS支持使用PromQL语法对时序数据进行查询链接,支持5个PromQL函数,promql_query、promql_query_range、promql_labels、promql_label_values和promql_series。


promql_query(string)、promql_query_range(string, string)函数返回的表的结构如下表所示

字段名 字段类型 说明
metric varchar 时序名称。如果查询分析中使用了Group By语法,那么该值可能为空。
labels map<varchar, varchar> Lables信息,Map类型。
time bigint 时间。
value double 某个时间点对应的值。


这里以promql_query_range函数为例介绍查询CPU使用率高于80%的时序点。告警规则配置为有数据。分组评估选择“标签自动”,即会

*|select promql_query_range('cpu_util')from metrics having value >80limit1000

image.png

规则名称:

主机CPU监控

7/64

固定间隔

检查频率:

分钟

15

查询统计:

添加

seLectpromql-query-rangeuutmin

limit1000

15分钟(相对)

分组评估:

标签自动

有数据

触发条件:


场景4:机器学习语法

SLS机器学习功能为您提供多种功能丰富的算法和便捷的调用方式,您可以在日志查询分析中通过分析语句和机器学习函数调用机器学习算法,分析某一字段或若干字段在一段时间内的特征。

接下来以一个异常检测函数ts_predicate_simple为例介绍下查询分析方。

函数格式:

select ts_predicate_simple(x, y, nPred, isSmooth)

参数说明如下:

参数 说明 取值
x 时间列,从小到大排列。 格式为Unixtime时间戳,单位为秒。
y 数值列,对应某时刻的数据。 -
nPred 预测未来的点的数量。 long类型,取值大于等于1。
isSmooth 是否需要对原始数据做滤波操作。 bool类型,默认为true表示对原始数据做滤波操作。


以OSS访问日志为例,查询每30秒的pv波动情况,并找出异常点

*|select ts_predicate_simple(stamp, value,6)from(select __time__ - __time__ %30as stamp,count(1)as value from log GROUPBY stamp orderby stamp)

如下图,红色圆圈表示通过机器学习算法找到的异常点,对应查找结果中的anomaly_prob=1.0,其中src表示原始值,predict表示预测值,可以在告警规则配置中对这些异常点进行检测。

image.png

告警配置如下:触发条件选择有大于2条数据满足anomaly_prob > 0,表示在过取4小时内,有两个异常点即告警。

image.png

规则名称:

12/64

OSS访问PV异常点检查

小时

固定间隔

检查频率:

?

你?

查询统计:

添加

Selecttpredicateimm

time----time_%30asstampcuom

BYsTamporDerbysTamP)

4小时(相对)

分组评估:

不分组

有特定条数据匹配

触发条件:

anomalyprob2o


参考

  • SLS查询概述【链接
  • SLS分析概述【链接
  • 查询和分析日志【链接
  • 时序数据查询分析简介【链接
  • 预测与异常检测函数【链接

进一步参考

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
11天前
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
47 5
|
13天前
|
存储 SQL 监控
|
13天前
|
运维 监控 安全
|
9天前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
|
16天前
|
监控 关系型数据库 MySQL
分析慢查询日志
【10月更文挑战第29天】分析慢查询日志
35 3
|
16天前
|
监控 关系型数据库 数据库
怎样分析慢查询日志?
【10月更文挑战第29天】怎样分析慢查询日志?
32 2
|
1月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1633 14
|
1月前
|
存储 消息中间件 大数据
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
35 4
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
45 2
|
1月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?

相关产品

  • 日志服务