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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 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日志并进行多维度分析。
目录
相关文章
|
3月前
|
监控 Android开发 C语言
深度解读Android崩溃日志案例分析2:tombstone日志
深度解读Android崩溃日志案例分析2:tombstone日志
83 0
|
3月前
|
Go 数据处理 Docker
elk stack部署自动化日志收集分析平台
elk stack部署自动化日志收集分析平台
79 0
|
3月前
|
缓存 固态存储 关系型数据库
MySQL性能优化指南:深入分析重做日志刷新到磁盘的机制
MySQL性能优化指南:深入分析重做日志刷新到磁盘的机制
|
5天前
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断2
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
10 0
|
4月前
|
存储 监控 安全
带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache Doris 升级日志安全分析系统(1)
带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache Doris 升级日志安全分析系统(1)
|
4月前
|
SQL 存储 安全
带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache Doris 升级日志安全分析系统(2)
带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache Doris 升级日志安全分析系统(2)
107 0
|
6天前
|
机器学习/深度学习 前端开发 数据挖掘
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
37 0
|
4月前
|
运维 监控 数据可视化
日志管理:收集和分析Docker容器日志
容器化技术的普及使得应用的部署和管理更加便捷,但随之而来的挑战之一是有效地管理和分析容器产生的大量日志。本文将深入探讨Docker容器日志管理的重要性,介绍常用的日志收集工具,以及如何分析和利用这些日志数据,提供更为丰富和实际的示例代码,帮助大家更好地理解和应用日志管理的关键技术。
|
17天前
|
SQL 存储 监控
日志问题精要:分析与总结
该文档讲述了应用系统日志记录的重要性和规则。主要目的是记录操作轨迹、监控系统状态和回溯故障。日志记录点包括系统入口、调用其他模块、调用结束、出口和出错时。内容应遵循UTF-8编码,避免敏感信息,按INFO级别记录,及时、完整且安全。日志输出要控制频率和长度,不影响系统性能,并按策略备份和清理。日志等级分为DEBUG、INFO、WARN、ERROR和FATAL。日志文件应有明确目录结构,大小有限制,并定期清理。注意事项包括输出异常堆栈、避免打印对象实例的hashCode、选择合适的日志框架和格式,并支持动态修改日志级别。还要实现链路追踪,确保在多线程环境中正确记录日志。
18 0
|
1月前
|
分布式计算 DataWorks 关系型数据库
DataWorks报错问题之报错“查询运行日志失败"如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。

相关产品

  • 日志服务