保姆级SLS日志服务使用总结

发布于:2023-01-04 ⋅ 阅读:(826) ⋅ 点赞:(0)

 

本文是向大家介绍日志服务的相关概念及功能,查询相关的语法及示例,最后是一些常见问题及解决方案。

一、基本概念及功能特性

什么是日志服务日志服务(Log Service,简称SLS)是针对日志类数据的一站式服务,在阿里巴巴集团经历大量大数据场景锤炼而成。无需开发就能快捷完成日志数据采集、消费、投递以及查询分析等功能,提升运维、运营效率,建立DT时代海量日志处理能力。

功能特性

日志服务包含以下功能模块,覆盖云原生观测与分析的多种业务场景

1.1 数据采集

日志服务提供50多种数据接入方案。

· 支持采集服务器与应用相关的日志、时序数据和链路数据。

· 支持采集物联网设备日志。

· 支持采集阿里云产品日志。

· 支持采集移动端数据。

· 支持采集Logstash、Flume、Beats、FluentD、Telegraph等开源软件中的数据。

· 支持通过HTTP、HTTPS、Syslog、Kafka、Prometheus等标准协议接入数据。

1.2 查询与分析

日志服务支持实时查询与分析数据。具体说明如下:

· 支持精确查询、模糊查询、全文查询、字段查询。

· 支持上下文查询、日志聚类、LiveTail、重建索引等功能。

· 支持标准的SQL 92语法。

· 提供SQL独享实例。

二、查询语法

2.1 全文查询和字段查询

查询方式

说明

示例

全文查询

配置全文索引后,日志服务根据您设置的分词符将整条日志拆分成多个词。您可以指定关键字(字段名、字段值)和查询规则进行查询。

PUT and cn-shanghai表示查询同时包含关键字PUTcn-shanghai的日志。

字段查询

配置字段索引后,您可以指定字段名称和字段值(Key:Value)进行查询。根据字段索引中设置的数据类型,您可以进行多种类型的基础查询和组合查询。

request_time>60 and request_method:Ge*表示查询request_time字段值大于60request_method字段值以Ge开头的日志。

2.2 精确查询和模糊查询

查询方式

说明

示例

精确查询

使用完整的词进行查询。

host:www.yl.mock.com表示查询host字段值为www.yl.mock.com的日志。

PUT表示查询包含关键字PUT的日志。

模糊查询

在查询语句中指定一个64个字符以内的词,在词的中间或者末尾加上模糊查询关键字,即星号(*)或问号(?),日志服务会在所有日志中为您查询到符合条件的100个词,返回包含这100个词并满足查询条件的所有日志。指定的词越精确,查询结果越精确。

说明

星号(*)或问号(?)不能用在词的开头。

long数据类型和double数据类型不支持使用星号(*)或问号(?)进行模糊查询。您可以使用数值范围进行模糊查询,例如status in [200 299]。

模糊查询是一种采样查询,查询机制如下所示:

当您开启字段索引,且指定某个字段进行查询时,日志服务从该字段的索引数据中随机采样,返回部分结果并不是全量扫描底层数据。

当您开启全文索引,且没有指定某个字段进行查询时,日志服务从全文索引数据中随机采样,返回部分结果并不是全量扫描底层数据。

addr*表示在所有日志中查找以addr开头的100个词,并返回包含这些词的日志。

host:www.yl*表示在所有日志中查找host字段的值以www.yl开头的100个词,并返回包含这些词的日志。

2.3 运算符

运算符

说明

and

and运算符。例如request_method:GET and status:200。

如果多个关键词之间没有语法关键词,默认为and关系,例如GET 200 cn-shanghai等同于GET and 200 and cn-shanghai。

or

or运算符。例如request_method:GET or status:200。

not

not运算符。例如request_method:GET not status:200、not status:200。

( )

用于提高括号内查询条件的优先级。例如(request_method:GET or request_method:POST) and status:200。

:

用于字段查询(Key:Value),例如request_method:GET。

如果字段名称或者字段值内有空格、冒号(:)等保留字符,请使用双引号("")包裹字段名称或者字段值,例如"file info":apsara。

""

使用双引号("")包裹一个语法关键词,可以将该语法关键词转换成普通字符。例如"and"表示查询包含and的日志,此处的and不代表运算符。

在字段查询中双引号("")内的所有词被当成一个整体。

\

转义符号,用于转义双引号(""),转义后的引号表示符号本身。例如日志内容为instance_id:nginx"01",您可以使用instance_id:nginx\"01\"进行查询。

*

通配符查询,匹配零个、单个、多个字符。例如host:www.yl.mo*k.com。

说明 日志服务会在所有日志中为您查询到符合条件的100个词,返回包含这100个词并满足查询条件的所有日志。

?

通配符查询,匹配单个字符。例如host:www.yl.mo?k.com。

>

查询某字段的值大于某数值的日志。例如request_time>100。

>=

查询某字段的值大于或等于某数值的日志。例如request_time>=100。

<

查询某字段的值小于某数值的日志。例如request_time<100。

<=

查询某字段的值小于或等于某数值的日志。例如request_time<=100。

=

查询某字段的值等于某数值的日志。针对double、long类型的字段,等号(=)和冒号(:)作用相同。例如request_time=100等同于request_time:100。

in

查询某字段的值处于某数值范围内的日志,中括号表示闭区间,小括号表示开区间,两个数字之间使用空格分隔。例如request_time in [100 200]或request_time in (100 200]。

说明 in只能为小写字母。

__source__

查询某个日志源的日志,支持通配符。例如__source__:192.0.2.*。

注意 日志服务中的__source__为保留字段,可缩写为source。如果您自定义的字段中存在source字段,则会与日志服务保留字段source冲突,此时您需要使用SourceSOURCE等词查询自定义的字段。

__tag__

通过元数据信息查询日志。例如__tag__:__receive_time__:1609837139。

__topic__

查询某日志主题下的日志。例如__topic__:nginx_access_log。

2.4 查询语句示例

查询需求

查询语句

查询GET请求成功(状态码为200~299)的日志。

request_method:GET andstatusin [200 299]

查询来自非上海地域的GET请求的日志。

request_method:GET notregion:cn-shanghai

查询GET请求或POST请求的日志。

request_method:GET orrequest_method:POST

查询非GET请求的日志。

notrequest_method:GET

查询GET请求或POST请求成功的日志。

(request_method:GET orrequest_method:POST) andstatusin [200 299]

查询GET请求或POST请求失败的日志。

(request_method:GET orrequest_method:POST) notstatusin [200 299]

查询GET请求成功(状态码为200~299)且请求时间小于60秒的日志。

request_method:GET andstatusin [200299] not request_time>=60

查询请求时间为60秒的日志。

· request_time:60

· request_time=60

查询请求时间大于等于60秒,并且小于200秒的日志。

· request_time>=60 and request_time<200

· request_timein[60200)

http_user_agent字段的值中包含Firefox的日志。

http_user_agent:Firefox

http_user_agent字段的值中包含LinuxChrome的日志。

· http_user_agent:"Linux Chrome"

· http_user_agent:Linux andhttp_user_agent:Chrome

包含and的日志。

"and"

此处的and为普通字符串,不代表运算符。

http_user_agent字段的值中包含FirefoxChrome的日志。

http_user_agent:Firefox orhttp_user_agent:Chrome

file info字段的值中包含apsara的日志。

"file info":apsara

查询以cn开头的日志。

cn*

查询region字段的值是以cn开头的日志。

region:cn*

查询region字段的值包含cn*的日志。

region:"cn*"

查询region字段的值以hai结尾的所有日志。

暂不支持

查询以mo开头,以la结尾,中间还有一个字符的日志。

mo?1a

查询以mo开头,以la结尾,中间包含零个、单个或多个字符的日志。

mo*1a

查询包含以Moz开头的词和以Sa开头的词的日志。

Moz* and Sa*

查询https日志主题和http日志主题下的日志。

__topic__:https or __topic__:http

查询采集于192.0.2.1主机的日志。

__tag__:__client_ip__:192.0.2.1

__tag__:__client_ip__表示日志所在主机的IP地址。

查询remote_user字段的值不为空的日志。

not remote_user:""

查询remote_user字段的值为空的日志。

remote_user:""

查询不存在remote_user字段的日志。

not remote_user:*

查询存在remote_user字段的日志。

remote_user:*

查询request_uri字段值为/request/path-2的日志。

request_uri:/request/path-2

三、常见问题

3.1 SLS只开了只读权限,会弹出错误提示,不影响查询

3.2 标签页数量超出限制,先删除暂时不需要使用的标签页,再打开页面

3.3 未成功采集日志数据如何排查

3.3.1 未成功采集日志数据

如果未成功采集日志数据到日志服务,则无法查询到目标日志。请在预览界面查看是否有日志数据。如果有日志数据,说明日志数据已成功采集到日志服务中,建议您排查其他原因。若没有日志数据,可能是以下原因造成,请进一步排查:

  • 日志源没有产生日志数据。

日志源没有日志产生的情况下,日志不可以投递到日志服务。请检查您的日志源。

  • Logtail无心跳。

请在机器组状态页面中查看机器是否有心跳。若Logtail无心跳

监控文件没实时写入。

如果监控文件没实时写入,请登录服务器,打开/usr/local/ilogtail/ilogtail.LOG日志文件,查看报错信息。常见错误如下:

    • parse delimiter log fail:分割符收集日志错误。
    • parse regex log fail:正则收集日志错误。

3.3.2 分词设置错误

查看已经设置好的分词符,根据分词符对日志内容进行分割后,是否得到关键字。例如分割符为默认的,;=()[]{}?@&<>/:’,如果日志中有abc”defg,hij会被分割成abc”defg和hij两部分,使用abc搜索不到这条日志。日志服务还支持模糊查询。

说明

  • 为了节约您的索引费用,日志服务进行了索引优化,配置了字段索引的Key,不进行全文索引。例如,日志中有名为message的key,并且配置了字段索引,加了空格做分词(加空格做分词,请把空格加到分词字符串的中间)。message: this is a test message可以使用key:value的格式message:this查询,但是直接查this查询不到,因为配置了字段索引的key,不进行全文索引。
  • 创建索引或者对索引做任何更改,只对新进的数据有效,旧数据一律无效。可以查看索引属性,检查已设置的分词是否符合要求。

3.3.3 通过模糊查询日志

通过SQL的like语法进行精确的模糊查询

* | Select * where key like ‘%查询内容%'

通过SQL的正则式函数进行模糊查询

* | select * from log where regexp_like(key, ‘查询内容’ )

3.3.4 其他原因

如果有日志产生,可以先查询修改查询的时间范围。另外由于日志预览的功能数据是实时的,但是查询的功能有1分钟左右的延迟,可以在日志产生后,等待1分钟然后再查询。


网站公告

今日签到

点亮在社区的每一天
去签到