使用搜索语言

InsightIDR允许您在搜索日志时使用几种不同的语言:

引号

您可以使用引号来匹配日志搜索的精确字符串。单引号的地方' '或双引号在字符串。

此外,您可以使用两种类型的三版本''''''”“”“”“在所有可能的组合和方案中。三重引号将在它们之间使用不变的所有内容,包括通过包含混合引号的字符串搜索的复杂案例。

示例:

         
1
“abc”””
2
“abc”
3.
关键= " "“abc”“”
4
关键=“abc”
5
主要包含任何[“aaa”“,”bbb””、“ccc”、“ddd的)
6
数据。cmd_line contains """WHERE "(name='java.exe' OR name='launch.exe')"""

运营商

InsightIdr支持逻辑和比较运算符,允许您创建更复杂的搜索。下面的指南将在构建查询时介绍可用于使用的两组操作员。

逻辑运算符

InsightIDR支持以下逻辑操作符来创建全面的搜索条件。请注意,当构造一个搜索查询时,所有操作符都应该是大写的。

逻辑运算符

例子

描述

EXPR1和EXPR2.

返回符合两个条件的日志事件

expr1或expr2

返回符合一个或两个条件的日志事件

不是

Expr1不是Expr2.

返回与Expr1匹配但不是Expr2的日志事件

比较运算符

比较操作符可以用于键值对(KVP)搜索和正则表达式搜索。

比较运算符

例子

描述

字段=值

返回与搜索值匹配的日志事件 - 匹配文本和数字值

! =

场!=值

返回与搜索值不匹配的日志事件—匹配文本和数字值

>

场> num

返回具有高于搜索值的字段值的日志事件

>=

字段> = num

返回字段值大于或等于搜索值的日志事件

<

字段

使用低于搜索值的字段值返回日志事件

<=

字段<= num

返回字段值小于或等于搜索值的日志事件

==

FIELDA == FIELB.

返回键值相同的日志事件。使用此操作符比较键。您可以比较字符串或数值

!==

Fielda!== FieldB

返回键值不相同的日志事件。您可以输入字符串或数值

包含

字段包含值

返回值包含指定文本值的日志事件

Icontains.

字段ICONTAINS值

返回日志事件,其中值案例不敏感地包含指定的文本值

以。。开始

字段开始值

返回值以指定的文本值开头的日志事件

istarts-with.

字段ISTARTS-WITH值

返回日志事件,其中值不敏感地以指定的文本值启动

[Value1,Value2,Value3]中的字段

多个or的快捷方式,例如。field=value1 OR field=value2 OR field=value3.返回日志事件,其中值与列表中的任何条件匹配 - 例如,文本,数字,正则表达式或CIDR,source_address [IP(10.0.0.0/24),IP(192.168.0.0/24)].列表可以包含1个或更多项。

IIN.

字段IIN [Value1,Value2,Value3]

与IN类似,返回值与列表中的任何条件匹配的日志事件,但是文本值以不区分大小写的方式进行比较

包含任何

字段CONTAINS-ANY [value1, value2, value3]

返回日志事件,其中值包含列表中的任何子字符串

ICONTAINS-ANY

字段IContains-any [Value1,Value2,Value3]

返回日志事件,其中值不区分大小写,包含列表中的任何子字符串

包含 - 全部

字段CONTAINS-ALL [value1, value2, value3]

返回日志事件,其中值包含列表中的所有子字符串

ICONTAINS-ALL

字段ICONTAINS-ALL [value1, value2, value3]

返回日志事件,其中值不区分大小写,包含列表中的所有子字符串

开始 - 任何

字段startwithany [value1, value2, value3]

返回日志事件,其中值以列表中的任何子字符串开头

istarts-with-with

字段startwith - any [value1, value2, value3]

返回日志事件,其中值不区分大小写,以列表中的任何子字符串开始

nocase()

字段= nocase(值)

返回不区分大小写匹配搜索文本或数字值的日志事件

注意:数值必须作为整数格式化为整数,作为浮点值,或者在科学符号中被Insightidr正确认可。单位不是作为比较的一部分计算的。例如,搜索值<100bytes不会返回值= 200bits的结果

NOT和比较运算符

您可以使用不是在这些操作人员面前:

  • 包含
  • Icontains.
  • 以。。开始
  • istarts-with.
  • IIN.
  • 包含任何
  • ICONTAINS-ANY
  • 包含 - 全部
  • ICONTAINS-ALL
  • 开始 - 任何
  • istarts-with-with

示例:

钥匙不在[aaa,bbb]

键1、键2未启动-带aaa

关键字搜索将对所有日志工作,无论其格式。关键字搜索在默认情况下是区分大小写的,并且将匹配一个完整的字符串,直到它被非字母字符分隔。例如:

         
1
4月13日20:01:01主机名运行零件(/etc/cron.hourly)[26263]:启动0anacron
2
4月13日20:01:01主机名运行零件(/etc/cron.hourly)[26272]:完成0anacron

InsightIdr将通过搜索“etc”或“运行”来匹配事件,因为文本由空格和非字母字符分隔。Insutigridr不会匹配“小时”,但会匹配“每小时”。

关键字搜索可以与逻辑运算符组合。例如,“启动和完成”将返回两个日志事件。

注意:列出一系列关键字时,InsightIdr会自动在每个关键字之间假设“和”。如果要匹配精确的字符串,请将“双引号”放在搜索周围。

正则表达式可以大大增强关键字搜索的能力。正则表达式必须用两个正斜杠(“/”)包装。InsightIDR中正则表达式搜索最常见的两种情况如下。

部分匹配

默认情况下,正则表达式搜索将返回部分匹配。下面的搜索将匹配“完全”,“完全”和“完成”。

         
1
(/完成/)

使用不区分大小写的关键字搜索意味着下面的搜索将匹配Error、Error、Error和任何其他形式的大写

         
1
其中(/错误/ i)

正则表达式运算符

正则表达式使用特殊字符来支持搜索更高级的模式。这些字符是+。如果需要使用特殊字符作为普通字符,则需要使用反斜杠对其进行转义()。

正则表达式字段提取

正则表达式分组和命名允许您识别日志事件中的值,并为这些值提供一个名称,类似于在日志事件中具有键值对。然后,您可以使用此命名捕获组来执行更复杂的搜索功能。

例如,如果要从以下原始日志数据中提取IP地址,该怎么办?

         
1
<11> 3月14日09:24:58 _hostname_ ssh:没有用户。可能的原因:无效的用户名,无效许可证,访问用户数据库时出错

您可以使用此查询来查找IP作为Source_Address:(/客户= (? P < source_address > \ d {1,3} \ \ d{1,3} \。。\ d {1,3} \ \ d {1,3}) /) groupby (source_address)计算(计算)

好处

正则表达式字段提取使您能够识别日志中非键值格式的关键信息,以便搜索功能可以应用于日志中的值。通过为已识别的值指定名称,这些值可以与我们的高级搜索功能一起使用,例如GroupBy ()或用于计算计数、总和、平均值或唯一实例计数等值。它们还可以用于创建警报时的比较。这意味着您可以创建一种非键值对日志格式的键值对类型。

  • 对命名的捕获组使用标准的RE2正则表达式语法。
  • 不依赖于任何日志类型或结构。
  • 删除数据采用KVP格式的要求。
  • 可以在查询中使用,并保存用于创建仪表板项。

在表达式中使用以下语法声明名为capture group的正则表达式:

         
1
(?p regexp)

' > '右侧的查询返回的结果将被赋值为' < > '中包含的名称。

考虑下面的示例日志事件,其中包含特定值,例如“Total Sale”:

         
1
12:12:14新销售活动 - 客户蒂姆 - 总销售24.45 - 物品毯子
2
12:12:15新销售活动–客户Tim–总销售额100.45–单品夹克
3.
12:12:16新销售活动-客户提姆-总销售额1000.33 -商品电脑

定期表达式以查找“Total Sale”之后的值并将此值分配给名为“salevalue”的命名变量是:

         
1
(/总销售(? P < saleValue > \ d *) /)

一旦捕获了密钥,就可以对它执行全范围的LEQL函数。例如:

         
1
where(/总销售额(?P<销售额>\d*)/)计算(平均:销售额)

在该示例中,'salevalue'是由于正则表达式将分配“Total Sale”的数字的名称。一旦将数字分配给Salevalue,则可以将平均计算应用于这些数字。

正则表达式字段提取在这种情况下非常有用,因为该值不是键值格式(KVP),这使得大多数系统很难知道要使用什么值。通过使用正则表达式命名的捕获组语法,现在可以很容易地识别该值并为其指定名称。然后将该名称用作搜索查询的一部分。还可以保存查询并将其用于创建仪表板项。

高级能力

要了解有关我们高级正则表达式搜索功能的更多信息,请阅读正则表达式日志搜索文档。

InsightIDR将自动解析KVP或JSON格式的日志事件,以便于使用高级分析。KVP和JSON解析文档详细说明了系统将解析的特定格式。如果您的日志不是标准KVP或JSON格式,您可以利用正则表达式字段提取来访问同一search能力。

为了理解如何编写KVP和JSON搜索,让我们看一下示例。给定下面的日志事件

搜索响应时间超过25的所有日志事件以返回前两个日志事件,例如:

         
1
其中(repsonse_time> 25)

然后,您可以添加逻辑运算符或包含来自ContainID 14的事件以返回所有三个日志事件:

         
1
在哪里(repsonse_time > 25或containerID = 14)

正则表达式字段提取

如果您的日志不包含任何KVP,则可以使用正则表达式字段提取指定为给定字符串的KVP关系。这将使您可以访问可用于KVP和JSON日志格式的所有高级搜索,分析和可视化功能。

关键表达

键值谓词的左边,例如键,可以用各种方式指定。

文字的关键键=值,返回具有名称的字段的日志事件关键匹配搜索值。

通配符键key.*=值,返回对象的嵌套字段或嵌套数组的项与搜索值匹配的日志事件。此搜索检索日志事件,如{"key": {"field1": "value", "field2": "garbage"}}{“键”:[“值”,“垃圾”]}.同样的结果也可以用,key.field1 = value或key.field2 =值key.0 =值或key.1 =值查询。通配符键不仅简化了搜索查询,而且还允许查找具有未知字段名和任意数组项顺序的日志事件。要搜索具有更复杂结构的日志事件,可以指定多个通配符,例如,关键。* .field1。* =值

注意,此类密钥仅适用于json日志事件。

任何钥匙key1,key2 =值,返回任何键匹配搜索值的日志事件。可以指定两个或多个键,每个密钥可以是文字或通配符键。使用此密钥表达式是等效查询的快捷方式key1 = value OR key2 = value

所有钥匙ALL(key1, key2) = value,返回所有键与搜索值匹配的日志事件。可以指定两个或多个键,每个键可以是文本键或通配符键。使用此键表达式是等效查询的快捷方式key1 = value AND key2 = value

注意,键值搜索支持各种运算符,例如! =包含等等。

InsightIDR支持无类域间路由(CIDR)表示法,允许您在网络上搜索一系列IP地址,而无需使用复杂的正则表达式。这意味着您可以轻松查看网络上最活跃的服务器、用户和应用程序。

关于InsightIDR中CIDR符号需要了解的事情

  • 您可以使用此功能搜索Insight网络传感器生成的流量数据以及包含IPv4地址的任何日志数据。
  • 这需要一个key=value搜索。IP()本身不能工作。
  • 允许的子网值为“/1”~“/32”。

在日志搜索中,输入具有以下格式的查询:

  • 简单的搜索destination_address = IP(192.168.0.0/24)
  • 高级搜索其中(destination_address = IP(192.168.0.0/24))

在哪里

  • destination_address.是您要筛选的日志数据中的字段
  • 192.168.0.0到是使用作为比较的IP地址
  • / 24.是您想要搜索的地址块吗

前面的查询将返回192.168.0.1到192.168.0.254范围内的任何地址。

您可以通过更新子网值来调整查询的网络范围。例如,用/ 16替换/ 24将返回192.168.0.1至192.168.255.254范围内的任何地址。

解析函数和可视化

使用我们强大的LEQL函数,您可以生成查询,轻松可视化数据,无需任何预处理。

数数

日志搜索还支持返回匹配的搜索结果计数。附加计算(计数)到您的搜索查询或按计算以获取搜索结果的数量。下面可以看出一个例子。

         
1
其中(status = 500)计算(计数)

总和

您可以使用Sum函数对名称-值对的值进行合计。如果您有KVP for sale_值,并且希望了解指定时间段内的总销售额,则可以使用以下查询:

         
1
其中(als_total> 0)计算(和:sale_total)。

平均

平均修改器类似于SUM修改器,但它计算符合搜索条件的值的平均值。例如,为了获得销售的平均值,您可以调用如下搜索:

         
1
在哪里(sale_total > 0)计算(平均:sale_total)

算上独特

Count Unique关键字返回给定键的唯一值的近似值。它接受一个参数:键的名称。例如,如果您的日志文件中有KVP userID,并且想要找到唯一用户的数量,您应该使用以下查询:

         
1
(userid)计算(唯一:userid)

最小值

Min函数将返回每个时间段的键的最小值。例如,下面的查询将返回每个时间段的最短响应时间:

         
1
其中(status = 200)计算(min:ranceetime)

最大限度

最大函数将返回每个时间段的键的最大值。例如,下面的查询将返回每个时间段的最长响应时间:

         
1
其中(status = 200)计算(max:ranceetime)

Groupby

阅读更多关于groupby函数和如何使用它的信息

时间片

在执行计数,最小值,最大或平均查询时,InsightIdr将自动计算十个相等的时间间隔。您可以使用TimeLICE函数手动设置时间间隔数。时隙的有效输入是1到200之间的数字(包含)。下面用于一小时搜索期的查询将返回每分钟500误差的计数。

         
1
其中(状态=500)计算(计数)时间片(60)

您还可以设置时间单位:秒、分钟、小时和天。不管输入的时间框架如何,下面的查询将返回每半小时404错误的计数。

         
1
(状态= 500)计算(计算)时间片(30米)

百分位数

百分位选项现在允许您从搜索函数中排除异常值。在简单模式下,您可以基于具有数字的键值对选择第95或第99百分位搜索函数。使用高级模式的用户可以使用百分位(80):key_value_pair在他们的计算函数中。

字节

“字节”选项允许您以字节形式计算日志的大小。这对于希望验证他们已发送到帐户的日志大小的用户非常有用。将计算给定日志大小的简单查询是(/ * /)计算(字节)

标准偏差

“标准偏差”选项用于计算给定系列值的标准偏差。当试图确定在给定平均值的正态方差范围内考虑哪些值时,这很有用。标准偏差的一个示例用例是响应时间。

         
1
计算(标准化:服务)

您也可以使用关键字sd作为快捷方式。例如:计算(sd:服务)