使用搜索语言
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的日志事件 |
比较运算符
比较操作符可以用于键值对(KVP)搜索和正则表达式搜索。
比较运算符 |
例子 |
描述 |
---|---|---|
|
字段=值 |
返回与搜索值匹配的日志事件 - 匹配文本和数字值 |
|
场!=值 |
返回与搜索值不匹配的日志事件—匹配文本和数字值 |
|
场> num |
返回具有高于搜索值的字段值的日志事件 |
|
字段> = num |
返回字段值大于或等于搜索值的日志事件 |
|
字段 |
使用低于搜索值的字段值返回日志事件 |
|
字段<= num |
返回字段值小于或等于搜索值的日志事件 |
|
FIELDA == FIELB. |
返回键值相同的日志事件。使用此操作符比较键。您可以比较字符串或数值 |
|
Fielda!== FieldB |
返回键值不相同的日志事件。您可以输入字符串或数值 |
|
字段包含值 |
返回值包含指定文本值的日志事件 |
|
字段ICONTAINS值 |
返回日志事件,其中值案例不敏感地包含指定的文本值 |
|
字段开始值 |
返回值以指定的文本值开头的日志事件 |
|
字段ISTARTS-WITH值 |
返回日志事件,其中值不敏感地以指定的文本值启动 |
|
[Value1,Value2,Value3]中的字段 |
多个or的快捷方式,例如。 |
|
字段IIN [Value1,Value2,Value3] |
与IN类似,返回值与列表中的任何条件匹配的日志事件,但是文本值以不区分大小写的方式进行比较 |
|
字段CONTAINS-ANY [value1, value2, value3] |
返回日志事件,其中值包含列表中的任何子字符串 |
|
字段IContains-any [Value1,Value2,Value3] |
返回日志事件,其中值不区分大小写,包含列表中的任何子字符串 |
|
字段CONTAINS-ALL [value1, value2, value3] |
返回日志事件,其中值包含列表中的所有子字符串 |
|
字段ICONTAINS-ALL [value1, value2, value3] |
返回日志事件,其中值不区分大小写,包含列表中的所有子字符串 |
|
字段startwithany [value1, value2, value3] |
返回日志事件,其中值以列表中的任何子字符串开头 |
|
字段startwith - any [value1, value2, value3] |
返回日志事件,其中值不区分大小写,以列表中的任何子字符串开始 |
|
字段= nocase(值) |
返回不区分大小写匹配搜索文本或数字值的日志事件 |
注意:数值必须作为整数格式化为整数,作为浮点值,或者在科学符号中被Insightidr正确认可。单位不是作为比较的一部分计算的。例如,搜索值<100bytes不会返回值= 200bits的结果
NOT和比较运算符
您可以使用不是
在这些操作人员面前:
包含
Icontains.
以。。开始
istarts-with.
在
IIN.
包含任何
ICONTAINS-ANY
包含 - 全部
ICONTAINS-ALL
开始 - 任何
istarts-with-with
示例:
钥匙不在[aaa,bbb]
键1、键2未启动-带aaa
关键词搜索
关键字搜索将对所有日志工作,无论其格式。关键字搜索在默认情况下是区分大小写的,并且将匹配一个完整的字符串,直到它被非字母字符分隔。例如:
14月13日20:01:01主机名运行零件(/etc/cron.hourly)[26263]:启动0anacron24月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(?pregexp)
' > '右侧的查询返回的结果将被赋值为' < > '中包含的名称。
考虑下面的示例日志事件,其中包含特定值,例如“Total Sale”:
112:12:14新销售活动 - 客户蒂姆 - 总销售24.45 - 物品毯子212:12:15新销售活动–客户Tim–总销售额100.45–单品夹克3.12:12:16新销售活动-客户提姆-总销售额1000.33 -商品电脑
定期表达式以查找“Total Sale”之后的值并将此值分配给名为“salevalue”的命名变量是:
1(/总销售(? P < saleValue > \ d *) /)
一旦捕获了密钥,就可以对它执行全范围的LEQL函数。例如:
1where(/总销售额(?P<销售额>\d*)/)计算(平均:销售额)
在该示例中,'salevalue'是由于正则表达式将分配“Total Sale”的数字的名称。一旦将数字分配给Salevalue,则可以将平均计算应用于这些数字。
正则表达式字段提取在这种情况下非常有用,因为该值不是键值格式(KVP),这使得大多数系统很难知道要使用什么值。通过使用正则表达式命名的捕获组语法,现在可以很容易地识别该值并为其指定名称。然后将该名称用作搜索查询的一部分。还可以保存查询并将其用于创建仪表板项。
高级能力
要了解有关我们高级正则表达式搜索功能的更多信息,请阅读正则表达式日志搜索文档。
键值对和JSON搜索
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
.
注意,键值搜索支持各种运算符,例如=
,! =
,在
,包含
等等。
IP搜索
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
时间片
在执行计数,最小值,最大或平均查询时,InsightIdr将自动计算十个相等的时间间隔。您可以使用TimeLICE函数手动设置时间间隔数。时隙的有效输入是1到200之间的数字(包含)。下面用于一小时搜索期的查询将返回每分钟500误差的计数。
1其中(状态=500)计算(计数)时间片(60)
您还可以设置时间单位:秒、分钟、小时和天。不管输入的时间框架如何,下面的查询将返回每半小时404错误的计数。
1(状态= 500)计算(计算)时间片(30米)
百分位数
百分位选项现在允许您从搜索函数中排除异常值。在简单模式下,您可以基于具有数字的键值对选择第95或第99百分位搜索函数。使用高级模式的用户可以使用百分位(80):key_value_pair
在他们的计算函数中。
字节
“字节”选项允许您以字节形式计算日志的大小。这对于希望验证他们已发送到帐户的日志大小的用户非常有用。将计算给定日志大小的简单查询是(/ * /)计算(字节)
标准偏差
“标准偏差”选项用于计算给定系列值的标准偏差。当试图确定在给定平均值的正态方差范围内考虑哪些值时,这很有用。标准偏差的一个示例用例是响应时间。
1计算(标准化:服务)
您也可以使用关键字sd
作为快捷方式。例如:计算(sd:服务)