帮助手册

AppLogs 查询语言

使用 Site24x7 AppLogs 收集、整合、索引和搜索日志,以获取可操作的洞察。添加日志配置文件日志类型,立即开始管理您的日志。使用易于理解的查询语言搜索,快速过滤无效值并获取可操作的结果。本文档将帮助您了解查询语法、结构和类型。

概述

以下是如何在 AppLogs 中使用查询语言搜索日志的教学视频:

语法

支持的运算符


运算符 说明
logtype 搜索特定框架类型的日志
monitor_name 搜索来自特定监视器的日志
monitor_group 搜索来自特定监视器组的日志
tags 搜索共享同一标签的监视器的日志
and 添加包含前一个查询的查询约束
or 添加排除前一个查询的查询约束
ratio 计算匹配两个不同搜索条件的日志消息数量之间的比率
groupby 仅返回不重复的值,并统计指定字段中的重复次数
timeslice 根据指定的时间间隔显示日志的时间分布
is empty 表示关联字段的值为空
is not empty 表示关联字段的值不为空
sum 返回字段中所选值的总和
min 返回字段中的最小值
max 返回字段中的最大值
avg 返回字段中各值的平均值
sd 返回标准差值
count_distinct 返回不重复值的计数
count 返回与查询匹配的日志消息数量
include 仅显示搜索输出中的选定字段
exclude 从搜索输出中排除指定字段,显示其余字段的值
before 返回一小时、一天或一周前同一时间点的查询结果
timeslice with before 按时间切片比较一小时、一天或一周前同一时间点的查询结果
count with before 比较一小时、一天或一周前同一时间点的结果计数
having 对 groupby 查询应用条件并获取所需输出
sort 根据某些字段返回排序后的值
STARTSWITH 返回以给定搜索条件开头的值
LIKE 允许在值中使用带星号的搜索条件
in 类似于对多个值使用 'or' 与 '=' 的组合
notin 类似于对多个值使用 'and' 与 '!=' 的组合
histo 为数值字段生成直方图
range 返回直方图的自定义范围
range interval 返回直方图的固定间隔输出
top 获取分组元素的最新值。
limit 指定 groupby 查询的最大结果数量
percentage 以百分比(100)的形式显示比率。
percentile and percents 表示给定百分比的数据低于该值。
not 添加查询约束,从查询结果中排除特定结果

数值运算符

如果字段是数值字段,您可以使用运算符(>、<、=、!=、<= 或 >=)将其与对应值进行匹配。

运算符 说明
> 大于。
<< /td> 小于。
= 等于。
>= 大于等于。
<=< /td> 小于等于。
注意
  1. CONTAINSNOTCONTAINSSTARTSWITH 等操作不支持 monitor_name、monitor_group、log_sourcetags 字段,因为这些字段不支持此类过滤条件。
  2. 查询条件中字段值的单位也可以使用转换后的单位,而不必使用原始单位。

例如,timetaken 字段的单位是毫秒。因此,除了以下写法:

logtype="Apache Access Logs" and timetaken>1000

也可以写成:

logtype="Apache Access Logs" and timetaken>1s

字符串运算符

如果字段是字符串字段或任何非数值字段,可以使用以下运算符:=、!= 和 CONTAINS。

运算符 说明
= 等于。
!= 不等于。
不包含。
CONTAINS 返回包含指定值的结果。
DOES NOT CONTAIN 返回不包含指定值的结果。

查询语言中的"CONTAINS"查询与标准字符串"CONTAINS"查询的工作方式不同。它检查日志中的匹配词元(token),因此不含空格、特殊字符或大小写变化的单个单词会被索引为单一词元,"CONTAINS"查询将无法检索到该词元。

例如,请参考以下示例字符串及其对应的词元:

示例字符串 词元
User U, ser
UserName User -> U, ser, Name->N,ame
Status200 Status->S, tatus, 200

在下方截图(图 1)中,第一条日志行被"CONTAINS"查询(图 2)排除,因为词语"error"与"CONTAINS"查询将其视为单一词元的"errortest"不匹配。

图 1

图 2

在此类情况下,您可以使用"LIKE"查询,如下方截图所示:

查询模板

查询的通用格式如下:

logtype = "examplelogtype" and "exampleNumericField1" [>,<,=,<=,>=] "dummynumber" or "examplestringfield1" [CONTAINS,!=,=] "examplesubstring1" groupby "examplestringfield2" timeslice [h,d,m] 

查询约束的限制

  • timeslicecount 约束之后不能再有其他约束。
  • groupby 约束之后只能跟 timeslice 约束。
  • Countcount distinct 约束不能同时存在。
  • Count 约束只能用于查询末尾,且查询中不应包含 groupbytimesliceaggregation 约束。

查询语言

使用查询语言搜索时,请遵循以下格式:

logtype="(name of log type)" and (other conditions)

在此格式中:

  • 日志类型名称)应为之前已添加的任意日志类型的显示名称。
  • 其他条件)可以是任意条件。每个条件可使用以下运算符:and、or 或 !。

示例查询:

   logtype="SysLogs" and application CONTAINS "systemd"

在此示例中:

  • 日志类型名称)为 SysLogs。
  • 其他条件)为 application CONTAINS "systemd"。

结果:该查询将获取日志类型为"SysLogs"且应用程序字段包含"systemd"的日志条目。

组合查询

您也可以像以下示例一样将多个条件组合在一起。

  • 带监视器名称的简单查询

logtype="SysLogs" and monitor_name CONTAINS "Zylker-server" and application CONTAINS "kernel"

在此查询中,监视器名称和应用程序字段值都将用于搜索日志。监视器名称为"Zylker-server"且应用程序包含"kernel"的结果将被显示。

logtype="SysLogs" and (application CONTAINS "kernel" or application CONTAINS "systemd") and message CONTAINS "pcieport"

在此查询中,括号内的条件被组合在一起。应用程序字段包含"kernel"或"systemd"的任何日志条目都将作为结果显示。

  • Timeslice(时间切片)

在查询末尾添加 timeslice(时间段)会生成一个表格,将所查询的总时间段按查询中指定的时间切片划分,并与日志条目数量进行对比。timeslice 的可用单位为 d(天)、h(小时)或 m(分钟)。

logtype="SysLogs" timeslice 2h
在此查询中,搜索最近 24 小时将返回 12 条记录(即 24 小时按 2 小时的时间切片划分,共 12 条记录)。
  • Or(或)

返回满足所提供条件之一的值。

logtype="IIS Access Logs" and (method="GET" or method="POST" or method="PUT")

该查询获取所有 GET、POST 和 PUT 方法的请求。

  • is empty(为空)

当关联字段不包含任何值时返回结果。

logtype="Windows Event Logs" and IsEmpty(user)
  • is not empty(不为空)

当关联字段包含任意值时返回结果。

logtype="Windows Event Logs" and IsNotEmpty(source)
  • Ratio(比率)

使用此运算符,您可以查找两个查询输出之间的比率。使用 or 查询比较两个条件,并在其后追加 ratio 以获取搜索查询的结果。使用 timeslice 可按特定时间间隔筛选比率。

logtype="Apache Access Logs" and (status=200 or status>200) ratio
logtype="Apache Access Logs" and (status=200 or status>200) timeslice 1h ratio
  • Groupby(分组)

Groupby(字段名称)显示指定字段中具有相同值的条目数量。

logtype="SysLogs" groupby application

在此查询中,将显示"application"字段中具有相同值的条目数量。

  • SUM(), MIN(), MAX(), AVG()

使用此功能,您可以查找日志中数值字段的最小值、最大值、平均值和总和。

例如,当您希望获取日志中数值的聚合数据时,可以使用此功能。

logtype="IIS Access Logs" AVG(timetaken) MIN(timetaken) MAX(timetaken) SUM(timetaken)

该查询获取聚合后的响应时间值。

  • 标准差

使用此功能,您可以计算一组数据的标准差值,从而确定给定数据集的波动程度。您可以使用 sd 查找 responsesize 和 timetaken 等指标相对于其平均值的偏差。

例如,以下查询:

logtype="Apache Access Logs" sd(responsesize)

返回日志中响应大小的标准差值。

  • Count distinct(不重复计数)

查询中的 Count distinct 仅获取不重复值的计数。

例如,当您想了解日志中指定不重复值的总数时,可以使用 count distinct

logtype="Windows Event Logs" COUNT_DISTINCT(source)

结果将显示不重复值的计数。

注意

CountCount distinct 不能同时使用。

  • Count(计数)

在查询末尾使用 Count 将返回与查询约束匹配的日志消息总数。

logtype="Windows Event Logs" and source CONTAINS "Microsoft-Windows-Security-Auditing" count

结果获取满足上述条件的日志消息数量。

  • 组合使用 groupby 和聚合

以下搜索将生成一个 groupby 表格,并附有 聚合值的额外列。

例如,当您希望获取 groupby 表格中分组值的聚合结果时,此组合非常有用。

logtype="IIS Access Logs" AVG(timetaken) MIN(timetaken) MAX(timetaken) groupby stemuri

在此查询中,将显示不重复 stemuri 的 MinMaxAvgCount

  •  组合使用 timeslice 和聚合

以下搜索将生成一个 timeslice 表格,并附有 聚合值的额外列。

例如,当您希望按时间维度获取聚合结果时,可以使用此组合。

logtype="IIS Access Logs" AVG(timetaken) MIN(timetaken) MAX(timetaken) timeslice 1h

在此查询中,将显示按一小时时间切片的 MinMaxAvgCount

  • 组合使用 groupby 和 timeslice

以下搜索将生成一个 timeslice 表格,并附有 groupby 值的额外列。从左到右,各列依次为:timeslicecount

例如,当您希望同时对结果进行时间切片和按给定约束分组时,可以在查询中同时使用 groupby 和 timeslice。

logtype="SysLogs" groupby application timeslice 1d

在此查询中,将显示按天时间切片且"application"字段具有相同值的日志条目数量。

  • 多重 groupby

以下搜索将生成一个包含多个 groupby 选项的表格。

例如,当您有多个 groupby 选项时,可以使用逗号分隔的 groupby,从而在单个表格中整合并查看多层次分组结果。

logtype="ServerLogs" groupby sourcefilename,loglevel,threadname

在此查询中,多个 groupby 条件被组合在一起。

  • Include(包含字段)

在搜索查询中使用 Include 将只显示指定字段的搜索结果。

logtype="SysLogs" | include(application,message)

在此查询中,搜索输出将连同 application、message 一起显示。

  • Exclude(排除字段)

在搜索查询中使用 Exclude 将在搜索结果中省略指定字段。

logtype="SysLogs" | exclude(pid)

在此查询中,搜索输出将不显示 pid 字段。

  • Before(之前)

使用此运算符,您可以查看一小时、一天或一周前同一时间点的查询结果。

例如,当您希望获取给定查询在某一时间之前的结果时,请使用 before

logtype="Apache Access Logs" avg(responsesize) | before 7d

该查询将获取一周前同一时间点的 avg(responsesize)。

  • Timeslice with before(时间切片与之前)

在查询中使用此功能,您可以按频繁的时间间隔比较一小时、一天或一周前同一时间点的查询结果。

例如,当您希望按指定频率比较上周同一天的状态码趋势时,可以将 timeslicebefore 结合使用。

logtype="IIS Access Logs" and statuscode>400 timeslice 1h | before 7d

该查询将按一小时间隔获取一周前同一时间点的状态码 > 400。

  • Count with before(计数与之前)

在查询中使用此功能,您可以比较一小时、一天或一周前同一时间点的查询结果计数。

例如,当您希望比较上周同一天的失败状态码数量时,可以将 countbefore 结合使用。

logtype="IIS Access Logs" and statuscode>200 count | before 7d

该查询将获取一周前同一时间点的失败状态码。

  • Having(条件过滤)

使用此运算符,您可以对 groupby 查询应用条件并获取所需的输出结果。

logtype="Apache Access Logs" groupby requesturi having avg(responsesize)>10240

该查询获取 avg(responsesize)>10240 的 requesturi 输出结果。

  • Sort(排序)

根据某些字段对请求进行排序。

例如,当您希望根据某些值对结果进行整理或分类时,可以使用 sort。

注意

注意:此功能只能与 group 查询一起使用。


logtype="Apache Access Logs" groupby requesturi sort avg(responsesize)

该查询获取按 avg(responsesize) 值排序的 requesturi 输出结果。

  • STARTSWITH(以……开头)

返回以给定搜索条件开头的值。其结果类似于在末尾使用星号(*)的 LIKE 查询,即搜索 STARTSWITH "Log" 类似于搜索 LIKE "Log*"

logtype="Windows Event Logs" and source STARTSWITH "Micro"

该查询获取所有以"Micro"开头的来源的结果。

  • LIKE(模糊匹配)

区分大小写,允许在值中使用星号作为通配符。
例如,LIKE "Log*n" 将同时匹配 LogonLogin

logtype="Windows Event Logs" and source LIKE "Microsoft*Auditing"

该查询获取来源包含 Microsoft Security Auditing、Microsoft Windows Auditing 等的所有结果。

  • in(在集合中)

类似于对多个值使用 'or' 与 '=',集合中的所有值都将被比较。
例如,Status in("200","404","500") 等同于 (status="200" or status="404" or status="500")

logtype="Apache Access Logs" and referer in("Refer 2, "Refer 1")

此查询获取类似于 (referer="Refer 2" or referer="Refer 1") 的结果。

  • notin(不在集合中)

类似于对多个值使用 'and' 与 '!=',集合中的所有值都将被比较。
例如,status notin("200","404","500") 等同于 (status!="200" and status!="404" and status!="500")

logtype="Apache Access Logs" and referer notin("Refer 2, "Refer 1")

此查询获取类似于 (referer!="Refer 2" or referer!="Refer 1") 的结果。

  • histo(直方图)

为数值字段生成直方图。类似于 groupby,但返回的是值的范围而非共同值。

logtype="Apache Access Logs" histo responsesize 

该查询根据响应大小生成直方图。

注意:

您也可以将 histogram 与 groupby 结合使用,以进一步对日志数据进行分区和分析。

例如:

logtype="Apache Access Logs" histo responsesize groupby requesturi
         
该查询按计数对 requesturi 进行分组,histo 则根据响应大小进行分类。

 
另一个示例:
 
logtype="Apache Access Logs" groupby requesturi histo responsesize
 
该查询按响应大小的直方图对请求进行分组,并根据计数对 URL 进行分组。

  • range(范围)

用于从直方图中获取自定义范围。range 只能在 histo 之后使用。

例如,status notin("200","404","500") 等同于 (status!="200" and status!="404" and status!="500")

logtype="Apache Access Logs" histo responsesize range(3800 to 4000,4200 to 4400)

该查询获取指定自定义范围值的直方图。

  • range interval(范围间隔)

用于从直方图中获取自定义时间间隔的结果。range interval 只能在 histo 之后使用。

例如,在直方图字段后指定范围间隔时,将获取自定义时间间隔的直方图。

logtype="Apache Access Logs" histo timetaken 1s

该查询获取 1s 自定义时间间隔的直方图。

  • top(最新值)

将 top 与 groupby 查询结合使用,可从分组元素中提取最新值。通过 top 查询,您可以从日志中检索重要指标。

 logtype="IIS Access Logs" top(ServerIP,stemuri,clientip) groupby Methodname

通过上述查询,您可以获取各种主题状态的最新值,例如主题偏移量和延迟计数。

  • limit(限制结果数)

与 groupby 查询结合使用,可显示超过默认十条的分组元素结果。调整 limit 值以获取所需数量的结果。默认情况下,groupby 查询将返回前 10 条结果。要获取更多结果,需要使用 limit N。N 的最大允许值为 1000

logtype="Infrastructure Events" groupby SourceName limit 30

通过上述查询,您可以检索按来源名称分类的最多 30 条日志条目。

  • percentage(百分比)

使用 percentage 从日志中获取一般统计信息。您可以通过以下查询查找失败请求的百分比。

logtype="IIS Access Logs" and statuscode>=400 percentage
  • percentile and percents(百分位数与百分数)

使用 percentile 和 percent 可更准确地解读性能数据。

logtype="IIS Access Logs" percentile(TimeTaken percents(95))

通过上述查询,您可以查找请求处理时间的第 95 百分位数。

  • 组合使用 percentile、timeslice 和聚合

以下搜索将生成一个趋势图,同时将平均值和百分位数值显示为趋势线。聚合百分位 timeslice 查询提供在特定时间间隔内聚合的百分位数值。

例如,当您希望按时间维度比较平均值和百分位数结果时,可以使用此组合。

logtype="IIS Access Logs" avg(TimeTaken) percentile(TimeTaken) percents(99) timeslice 15m

not(排除):

返回从查询结果中排除特定结果后的值。

logtype="Windows Event Log" and level!="Information" not (computername like "*PRODUCTION01*" or computername like "*production1*") groupby computername

该查询获取 Windows Event Log 中级别不为"Information"且计算机名称不包含"PRODUCTION01"或"production1"的所有日志条目。

最近搜索:

您可以从最近搜索历史记录中重复使用之前的搜索,而无需每次重新输入。请按以下步骤查看:

    1. 点击搜索框中的 已保存和最近搜索图标 图标。
    2. 您可以在已保存的搜索下方查看最近的搜索查询。您还可以保存搜索查询以供将来使用。

注意
如果您需要构建用于分析日志的特定查询,欢迎随时联系 support@site24x7.com。执行查询或扫描已索引日志均不收取任何费用。

自动值建议

借助自动值建议功能,您可以使用最相关的字段值实时动态调整和修改查询。系统会自动为每个字段推荐多达一千个频繁出现的值,从而实现更精准的过滤和高效的故障排除。

要使用自动值建议,请按照以下简单步骤操作:

  1. 导航到 AppLogs 标签页。
  2. 输入搜索查询(例如 logtype="Automation Logs")。
  3. 输入时,系统将自动建议字段名称及其字段值。
注意

这些值建议适用于支持 groupby 查询功能的字段,侧重于预定义值。您可以从这些建议中进行选择,以进一步优化查询。

字段浏览器 

通过字段浏览器中的字段值调整搜索结果,实时修改查询。您可以按照以下简单步骤操作:

  1. 导航到 AppLogs 标签页。

  2. 输入搜索查询(例如 logtype="Nginx Access Logs")。

  3. 日志结果显示后,从日志输出表格的左侧访问字段浏览器,以查看字段列表和日志结果的前五个值。

延伸阅读

博客:10 个有助于管理日志的过滤模式

本文档对您有帮助吗?

您愿意帮助我们改进文档吗?请告诉我们哪些方面可以做得更好。


很抱歉本文档未能让您满意。我们希望了解可以从哪些方面改进您的体验。


感谢您抽出时间分享反馈。我们将利用您的反馈来改进在线帮助资源。

短链接已复制!