帮助手册 AppLogs 查询语言

AppLogs 查询语言

使用Site24x7 AppLogs收集、整合、索引和搜索日志以获得可行的见解。添加 日志配置文件 和 日志类型以立即开始管理您的日志。运行易于理解的语言搜索以过滤掉无效值并快速获得可操作的结果。从此文档中了解有关查询语法、结构和类型的更多信息。

概述 

语法 

支持的运营商

distinct只返回不同的(不同的)值。

操作 描述
logtype

搜索特定框架类型的日志。

monitor_name

搜索来自特定监视器的日志。

monitor_group

搜索来自特定监视器组的日志。

tags

从具有公共标签的监视器中搜索日志。

and

添加一个包含上一个查询的查询约束。

or

添加排除前一个查询的查询约束。

groupby

查找指定字段中重复值的计数。

timeslice

根据指定的时间间隔显示日志的时间。

is empty

指定关联字段具有空值。

is not empty

指定关联字段不具有空值。

sum

返回字段中选定值的总和。

min

返回字段中的最小值。

max

返回字段中的最大值。

avg

返回字段中值的平均值。

sd

返回标准偏差值。

count_distinct

返回不同值的计数。

count

返回与查询匹配的日志消息数。

include

仅显示搜索输出中的选定字段。

exclude

从搜索输出中排除并显示给定字段以外的值。

before

返回一个小时、一天或一周前同一时间的查询结果。

having

对 groupby 查询应用条件并获得所需的输出。

sort

返回基于某些字段的排序值。

STARTSWITH

给出以给定搜索条件开头的值。

LIKE

允许在值中使用带有星号的搜索条件

in

类似于使用多个 'or' 和 '='。

notin

类似于使用多个 'and' 和 '!='。

histo

给出数值字段的直方图。

range

返回直方图的自定义范围。

range interval

返回直方图的恒定间隔输出。

数值运算符

如果字段是数字字段,您可以包含运算符(>、<、=、!=、<= 或 >=)以将其与其值匹配。 

操作 描述
> 大于。
< 小于。
= 等于。
>= 大于等于。
<= 小于等于。

注意: 

字段值的单位也可以在查询条件中作为转换单位而不是原始单位给出。 

例如,timetaken 字段的单位是毫秒。所以,不要把这个查询写成,

logtype="Apache Access Logs" and timetaken>1000

也可以写成,

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

 

字符串运算符

如果字段是字符串字段或任何非数字字段,则它可以具有以下运算符:=、!= 和 CONTAINS。 

操作员 描述
= 等于。
!= 不等于。
不含。
包含 返回包含首选值的值。
不含 返回不包含首选值的值。

查询模板 

查询的一般格式如下:

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

查询约束的限制

  • 时间片和 计数 约束后面不能有任何其他约束。
  • 一个 groupby约束只能跟一个 时间片约束。
  • 计数计数不同的 约束不能共存。
  • Count约束只能在查询结束时使用,并且查询中不应包含groupby  timeslice聚合约束

查询语言

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

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

以这种格式:

  • 日志类型的名称)应该是任何先前添加的日志类型的显示名称。
  • 其他条件)可以是任何条件。您可以对每个条件使用以下运算符:and、or、or !。

示例查询:

 logtype="SysLogs" and application CONTAINS "systemd"

在这个例子中:

  • 日志类型的名称)是 SysLogs。 
  • 其他条件)是应用程序包含“systemd”。

Query language

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

组合查询

您还可以将多个条件组合在一起,如下例所示。

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

logtype="SysLogs" 和 monitor_name 包含“Zylker-server”和应用程序包含“内核”

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

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

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

  • 时间片

在查询结束时添加 时间片 (时间段)会生成一个表格,其中包含查询的选定总时间段,除以查询中指定的时间片与日志条目计数。可能的时间片值使用单位 d(天)、h(小时)或 m(分钟)。

logtype="SysLogs" 时间片 2h
在此查询中,过去 24 小时的搜索提供了 12 个条目(即 24 小时加上两个小时的时间片总共提供 12 个条目)。

Timeslice query

  • 或者

返回与提供的任一条件匹配的值。

logtype="IIS 访问日志" 和 (method="GET" or method="POST" or method="PUT")

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

 

Or query

  • 通过...分组

Groupby(字段名称)显示所提供字段具有相同值的条目数。

logtype="SysLogs" groupby 应用程序

在此查询中,将显示字段“应用程序”具有相同值的条目数。

Groupby Query

  • 总和(),最小(),最大(),平均()

使用它,您可以在日志中找到数字字段的最小值、最大值、平均值和总和。

例如,您可以将其用于您希望获取汇总数据的日志中的数值。

logtype="IIS 访问日志" AVG(timetaken) MIN(timetaken) MAX(timetaken) SUM(timetaken)

此查询获取汇总的耗时值。

Aggregate query

  • 标准差

使用它,您可以找到一组数据的 sd 值。这可以帮助您确定给定数据集中的可变性。您可以使用sd从平均值中查找指标的变化,例如 responsesize 和 timetaken。

例如,以下查询,

logtype="Apache Access Logs" sd(responsesize)

返回日志中响应大小的 sd 值。

SD value of an applog query

  • distinct

通过在查询中使用 distinct ,您可以获取仅包含不同值的表。

例如,当有多个重复值但您希望仅获取表中的不同值作为搜索结果时,您可以使用 distinct。

logtype="ServerLogs" distinct(threadname)

结果,显示了不同的线程名称及其计数。 

Distinct query

  • 计数不同

查询中的不同计数仅获取不同值的计数。

例如,当您想知道日志中指定的 distinct 值的总数时,可以使用 count distinct 。

logtype="ServerLogs" COUNT_DISTINCT(threadname)

结果显示不同值的计数。

Count和 Count distinct不能共存。

 

Count distinct query

在查询结束时使用 Count 将为您提供与查询中的约束匹配的日志消息总数。

logtype="Windows 事件日志" 和源包含 "Microsoft-Windows-Security-Auditing" 计数

结果获取符合上述条件的日志消息数。

Count query

  • 将groupby和aggregation结合在一起

下面的搜索会生成一个 groupby表,其中包含用于聚合 值  的附加列 。

例如,当您想要在 groupby 表中分组的值的聚合结果时,这种组合会很有帮助。

logtype="IIS 访问日志" AVG(timetaken) MIN(timetaken) MAX(timetaken) groupby stemuri

在此查询中, 显示了唯一stemuri 的Min、  Max、  Avg和 Count 。

Aggregate grouoby query

  •  将时间片和聚合结合在一起

下面的搜索会生成一个 时间片表,其中包含用于聚合 值  的附加列 。

例如,当您希望及时汇总结果时,可以使用此组合。

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

在此查询中, 显示按一小时时间切片的Min、  Max、  Avg和 Count 。

Aggregate timeslice query

  • 将groupby和timeslice结合在一起

下面的搜索会生成一个 时间片表,其中包含一个用于 groupby 值的附加列。从左到右,这些列分别为:  timeslice、  count和 value(s)

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

logtype="SysLogs" groupby application timeslice 1d

在此查询中,将显示按一天时间分片且在“应用程序”字段中具有相同值的日志条目数。

Groupby timeslice query

  • 多个groupby

下面的搜索会生成一个包含多个 groupby选项的表。

例如,当您有多个 groupby 选项时,您可以使用以逗号分隔的 groupby,以便您可以在单个表中合并和查看多级 groupby。

logtype="ServerLogs" groupby sourcefilename,loglevel,threadname

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

Multiple groupby query

  • 包括

在搜索查询中使用Include会获取显示指定字段的结果。

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

在此查询中,搜索输出将与 应用程序、消息一起显示。
Include query

  • 排除

在搜索查询中使用Exclude会获取省略了指定字段的结果。

logtype="SysLogs" | exclude(pid)

在此查询中,将显示搜索输出而不显示消息pid。
Exclude query

  • before

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

例如,当您想要某个时间之前可用的给定查询的结果时,请使用before

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

此查询将获取一周前同一时间的 avg(responsesize)。
Before query

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

    例如,当您想根据某些值对结果进行组织或分类时,可以使用 sort。

    注意:这只能用于组查询。
logtype="Apache Access Logs" groupby requesturi having avg(responsesize)>10240

此查询获取按avg(responsesize) 值排序的  requesturi 的输出。
Having query

  • Sort

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

例如,当您想根据某些值对结果进行组织或分类时,可以使用 sort。

注意:这只能用于组查询。

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

此查询获取按avg(responsesize) 值排序的  requesturi 的输出。
Sort query

  • STARTSWITH

给出以给定搜索条件开头的值。这获取的结果类似于在末尾使用 带有 *的LIKE 。即,搜索STARTSWITH "Log"将类似于搜索LIKE "Log*"

logtype="Windows 事件日志" 和源 STARTSWITH "Micro"

这将为所有以 Micro 开头的源获取结果。



Startswith query

  • LIKE

这是区分大小写的,并允许在值中使用带有星号的搜索条件。
例如,LIKE "Log*n"将匹配LogonLogin

logtype="Windows 事件日志" 和来源 LIKE "Microsoft*Auditing"

这会使用 Microsoft 安全审核、Microsoft Windows 审核等获取任何来源的结果。

LIKE不能在开头 包含*
例如:source LIKE "*" 或 SOURCE LIKE "*Windows" 将不起作用。

 

Like query

  • 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" 或 referer="Refer 1")的结果

In query

  • 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" 或 referer!="Refer 1")的结果

Notin query

  • histo

给出数值字段的直方图。这类似于groupby,但不是返回一个公共值,而是返回一个值范围。

logtype="Apache Access Logs" histo responsesize 

这会根据响应大小获取直方图。

Histo query

 

Note:

您还可以使用histogram 和 groupby来进一步分区和分析日志数据。

例如,

logtype="Apache Access Logs" histo responsesize groupby requesturi
         
此查询按其计数对 requesturi 进行分组,并根据其响应大小对 histo 进行分类。直方图分组Histogram groupby
 
另一个例子:
 
logtype="Apache Access Logs" groupby requesturi histo responsesize
 
此查询按响应大小的历史对请求进行分组,并根据其计数对 url 进行分组。  分组直方图Groupby Histogram
  • 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 query

  • 范围间隔

这用于从直方图中获取具有自定义时间间隔的结果。Range intreval 只能在 histo 之后使用

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

logtype="Apache Access Logs" histo timetaken 1s

这将获取自定义时间间隔为 1 秒的直方图。

Histo range interval query

最近的搜索:

您可以重复使用我们最近搜索历史中的最近搜索,而不是每次都输入它。您可以按照以下步骤查看它们

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



Saved search

相关文章:

 

帮助手册 AppLogs Query Language