使用SPL查询和分析日志

当您需要对日志数据进行结构化信息提取、字段操作和数据过滤时,可以通过使用SPL语言(SLS Processing Language)来解决这些问题。另外,日志服务还提供多级管道级联功能,以便输出经过SPL处理的结果数据。

背景信息

当SPL查询涉及到的字段都有字段索引(并开启统计)的时候,SPL会按照索引模式执行查询分析。如果SPL涉及的字段没有索引,会按照扫描(Scan)模式查询和分析。更多信息,请参见扫描(Scan)查询概述

支持地域

说明

在其他地域,无论SPL语句中字段是否有索引,都会直接按照扫描模式执行。

华东6(福州-本地地域)、印度尼西亚(雅加达)。

基本语法

  • 基本语法

    SPL指令的语法参考 SPL指令

    索引查询语句 | <spl-cmd> ... | <spl-cmd> ...
  • 使用示例

    • 按某个条件过滤原始日志

      status:200 | where host like '%www%'
    • 计算出新的字段,计算出的字段也可以再次过滤。

      status:200 
      | extend timediff = cast(endTime as bigint) - cast(beginTime as bigint)
      | where timediff > 100
    • 将JSON字段展开,丢弃原有的JSON字段。

      status:200 
      | parse-json body 
      | project-away body

索引模式SPL与扫描模式SPL的对比

当SPL查询涉及到的字段都有字段索引(并开启统计)的时候,SPL会自动按照索引模式执行,否则按照扫描模式执行。

对比项

索引模式SPL

扫描模式SPL

是否需要配置索引

需要SPL中涉及到的字段,开启字段索引并开启统计。

不需要。

重要

第一级竖线(|)前的索引查询语句仍依赖于索引。

性能

一般

是否支持随机翻页

支持。

不支持。

日志直方图

基于查询语句的查询结果进行展示。

基于查询语句的查询结果、扫描进度进行展示。

运算符与函数

参考SPL指令SPL支持的SQL函数列表

参考SPL指令SPL支持的SQL函数列表

字段类型

SPL语句中出现的字段均按照text类型处理。详情请参考数据类型转换

SPL语句中出现的字段均按照text类型处理。详情请参考数据类型转换

结果集大小

通过控制台或SDK指定,最大100条。

满足下述任一条件,本次扫描结束并返回扫描结果。

  • 达到您所指定的结果条数。

    您可以控制台或SDK指定返回的结果条数。

  • 扫描超过了单次系统设定的最大条数(基于查询语句的结果集,默认10万条。)

  • 扫描执行时间超过45秒。

费用

索引流量和索引存储费用。更多信息,请参见按使用功能计费模式计费项

SPL执行本身不产生额外费用。

扫描部分按照流量收费,即基于索引查询后扫描命中的数据量收费。

操作方式

重要

在查询日志前,请确保您已采集到日志和创建索引。索引是一种存储结构,用于对日志数据中的一列或多列进行排序。更多信息,请参见创建索引

控制台

登录日志服务控制台,在目标Logstore的查询和分析页面执行查询操作。具体操作,请参见查询和分析日志

示例

原始日志为1000万条。查询语句:Status:200 | where Category like '%xx%',满足Status:200 where Category like '%xx%'的日志1000条。查询结果界面中的直方图(histogram)展示了这1000条符合整个SPL语句条件的日志随时间变化的分布情况。

API

通过GetLogs(返回结果不压缩后传输)GetLogsV2(返回结果压缩后传输)接口执行查询操作。