本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
布尔值、比较、数值、日期时间和其他函数
CloudWatch Logs Insights 支持查询中的许多其他操作和功能,如以下各节所述。
算术运算符
算术运算接受数值数据类型作为参数并返回数值结果。在 filter
和 fields
命令中使用算术运算并将其用作其他函数的参数。
操作 | 描述 |
---|---|
|
加 |
|
减 |
|
乘 |
|
除 |
|
幂( |
|
余额或模数( |
布尔运算符
使用布尔运算符 and
、or
和 not
。
注意
仅在返回值为TRUE或的函数中使用布尔运算符FALSE。
比较运算符
比较运算接受所有数据类型作为参数,并返回布尔值结果。在 filter
命令中使用比较运算并将其用作其他函数的参数。
运算符 | 描述 |
---|---|
|
Equal |
|
Not equal |
|
Less than |
|
Greater than |
|
小于或等于 |
|
大于或等于 |
数值运算符
数值运算接受数值数据类型作为参数并返回数值结果。在 filter
和 fields
命令中使用数值运算并将其用作其他函数的参数。
操作 | 结果类型 | 描述 |
---|---|---|
|
number |
绝对值 |
|
number |
舍入到上限(大于 |
|
number |
舍入到下限(小于 |
|
number |
返回最大值 |
|
number |
返回最小值 |
|
number |
自然对数 |
|
number |
平方根 |
结构类型
地图或列表是 L CloudWatch ogs Insights 中的一种结构类型,允许您访问和使用属性进行查询。
示例:获取地图或列表
用于jsonParse
将 json 字符串字段解析为地图或列表。
fields jsonParse(@message) as json_message
示例:访问属性
使用点访问运算符 (map.attribute) 访问地图中的项目。如果地图中的属性包含特殊字符,请使用反引号将属性名称括起来(map.attributes。 `special.char`)。
fields jsonParse(@message) as json_message | stats count() by json_message.status_code
使用方括号访问运算符(list [index])检索列表中特定位置的项目。
fields jsonParse(@message) as json_message | filter json_message.users[1].action = "PutDat
当密钥名称中存在特殊字符时,用反引号 (``) 将特殊字符换成反引号 (``)。
fields jsonParse(@message) as json_message | filter json_message.`user.id` = "123"
示例:空结果
对于字符串、数字和日期时间函数,地图和列表被视为空值。
fields jsonParse(@message) as json_message | display toupper(json_message)
将地图和列表与任何其他字段进行比较会得出false
。
注意
stats
不支持在dedup
、pattern
sort
、和中使用地图和列表。
日期时间函数
日期时间函数
在 fields
和 filter
命令中使用日期时间函数并将其用作其他函数的参数。使用这些函数为使用聚合函数的查询创建时间存储桶。使用由数字和下列项之一组成的时间段:
ms
代表毫秒s
代表秒m
代表分钟h
代表小时
例如,10m
为 10 分钟,1h
为 1 小时。
注意
为日期时间函数使用最合适的时间单位。 CloudWatch 日志会根据您选择的时间单位对您的请求进行上限。例如,对于使用 s
的任何请求,它将最大值限制为 60。因此,如果您指定bin(300s)
, CloudWatch Logs 实际上将其实现为 60 秒,因为 60 是一分钟内的秒数,因此 CloudWatch Logs 不会使用大于 60 的数字s
。要创建 5 分钟的存储桶,请改用 bin(5m)
。
ms
的上限为 1000,s
和 m
的上限为 60,h
的上限为 24。
下表包含可在查询命令中使用的不同日期时间函数列表。该表列出了每个函数的结果类型,并包含对每个函数的描述。
提示
在创建查询命令时,您可以使用时间间隔选择器选择要查询的时间段。例如,您可以设置 5 到 30 分钟的时间间隔;1、3 和 12 小时间隔;或者自定义时间范围。您还可以设置特定日期之间的时间段。
函数 | 结果类型 | 描述 |
---|---|---|
|
Timestamp |
将 您可以使用它将某个查询中的多个日志条目分为一组。以下示例返回每小时的异常数量。
|
|
Timestamp |
将时间戳截断到指定的时间段。例如, |
|
Timestamp |
将时间戳向上舍入到指定的时间段,然后截断。例如, |
|
Timestamp |
将输入字段解释为自 Unix 纪元以来的毫秒数并将其转换为时间戳。 |
|
number |
将在命名字段中找到的时间戳转换为表示自 Unix 纪元以来毫秒数的数字。例如, |
注意
目前, CloudWatch Logs Insights 不支持筛选带有人类可读时间戳的日志。
常见函数
常见函数
在 fields
和 filter
命令中使用常规函数并将其用作其他函数的参数。
函数 | 结果类型 | 描述 |
---|---|---|
|
布尔值 |
如果字段存在,则返回 |
|
LogField |
返回列表中的第一个非 null 值 |
JSON 函数
JSON 函数
使用fields
和filter
命令中的JSON函数以及其他函数的参数。
函数 | 结果类型 | 描述 |
---|---|---|
|
地图 | 清单 | 空 |
当输入是JSON对象或JSON数组的字符串表示形式时,返回地图或列表。如果输入不是表示形式之一,则返回一个空值。 |
|
String |
当输入是JSON对象或JSON数组的字符串表示形式时,返回地图或列表。如果输入不是表示形式之一,则返回一个空值。从地图或列表数据中返回JSON字符串。 |
IP 地址字符串函数
IP 地址字符串函数
在 filter
和 fields
命令中使用 IP 地址字符串函数并将其用作其他函数的参数。
函数 | 结果类型 | 描述 |
---|---|---|
|
布尔值 |
|
|
布尔值 |
|
|
布尔值 |
|
|
布尔值 |
|
|
布尔值 |
|
|
布尔值 |
|
字符串函数
字符串函数
在 fields
和 filter
命令中使用字符串函数并将其用作其他函数的参数。
函数 | 结果类型 | 描述 |
---|---|---|
|
数字 |
如果字段缺失或为空字符串,则返回 |
|
数字 |
如果字段缺失或为空字符串,或只包含空格,则返回 |
|
字符串 |
连结字符串。 |
|
字符串 |
如果函数没有第二个参数,它将删除字符串左侧的空格。如果函数有第二个字符串参数,它将不会删除空格。相反,它会从 |
|
字符串 |
如果函数没有第二个参数,它将删除字符串右侧的空格。如果函数有第二个字符串参数,它将不会删除空格。相反,它会从 |
|
字符串 |
如果函数没有第二个参数,它将删除字符串两端的空格。如果函数有第二个字符串参数,它将不会删除空格。相反,它会从 |
|
number |
返回 Unicode 代码点中字符串的长度。 |
|
字符串 |
将字符串转换为大写。 |
|
字符串 |
将字符串转换为小写。 |
|
字符串 |
返回从由数值参数指定的索引到字符串末尾的子字符串。如果该函数具有二个参数,它包含要检索的子字符串的长度。例如, |
|
字符串 |
将 例如,函数 |
|
number |
如果 |