本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
布尔值、比较、数值、日期时间和其他函数
CloudWatch Logs Insights 支持查询中的许多其他操作和功能,如以下各节所述。
算术运算符
算术运算接受数值数据类型作为参数并返回数值结果。在 filter 和 fields 命令中使用算术运算并将其用作其他函数的参数。
| 操作 | 描述 |
|---|---|
|
|
加 |
|
|
减 |
|
|
乘 |
|
|
除 |
|
|
幂( |
|
|
余额或模数( |
布尔运算符
使用布尔运算符 and、or 和 not。
注意
仅在返回 TRUE 或 FALSE 值的函数中使用布尔运算符。
比较运算符
比较运算接受所有数据类型作为参数,并返回布尔值结果。在 filter 命令中使用比较运算并将其用作其他函数的参数。
| 运算符 | 描述 |
|---|---|
|
|
Equal |
|
|
Not equal |
|
|
Less than |
|
|
Greater than |
|
|
小于或等于 |
|
|
大于或等于 |
数值运算符
数值运算接受数值数据类型作为参数并返回数值结果。在 filter 和 fields 命令中使用数值运算并将其用作其他函数的参数。
| 操作 | 结果类型 | 描述 |
|---|---|---|
|
|
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 = "PutData"
当键名中出现特殊字符时,请用反引号 (``) 将特殊字符括起来。
fields jsonParse(@message) as json_message | filter json_message.`user.id` = "123"
示例:空结果
对于字符串、数字和日期时间函数,映射和列表会被视为空值。
fields jsonParse(@message) as json_message | display toupper(json_message)
将映射和列表与任何其他字段进行比较会得出 false。
注意
不支持在 dedup、pattern、sort 和 stats 中使用映射和列表。
日期时间函数
日期时间函数
在 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 epoch 以来的毫秒数并将其转换为时间戳。 |
|
|
数字 |
将在命名字段中找到的时间戳转换为表示自 Unix epoch 以来毫秒数的数字。例如, |
|
|
数字 |
返回查询处理开始的时间,以 epoch 秒为单位。此函数不接受任何参数。 您可以使用它根据当前时间筛选查询结果。 例如,以下查询将返回过去两小时内的所有 4xx 错误:
以下示例会返回过去五小时内所有包含
|
注意
目前, CloudWatch Logs Insights 不支持筛选带有人类可读时间戳的日志。
常见函数
常见函数
在 fields 和 filter 命令中使用常规函数并将其用作其他函数的参数。
| 函数 | 结果类型 | 描述 |
|---|---|---|
|
|
布尔值 |
如果字段存在,则返回 |
|
|
LogField |
返回列表中的第一个非 null 值 |
JSON 函数
json 函数
在 fields 和 filter 命令中使用 JSON 函数并将其用作其他函数的参数。
| 函数 | 结果类型 | 描述 |
|---|---|---|
|
|
映射 | 列表 | 空 |
当输入为 JSON 对象的字符串表示形式或 JSON 数组时,返回映射或列表。如果输入不是其中一种表示形式,则返回空值。 |
|
|
字符串 |
从映射或列表数据中返回 JSON 字符串。 |
IP 地址字符串函数
IP 地址字符串函数
在 filter 和 fields 命令中使用 IP 地址字符串函数并将其用作其他函数的参数。
| 函数 | 结果类型 | 描述 |
|---|---|---|
|
|
布尔值 |
|
|
|
布尔值 |
|
|
|
布尔值 |
|
|
|
布尔值 |
|
|
|
布尔值 |
|
|
|
布尔值 |
|
字符串函数
字符串函数
在 fields 和 filter 命令中使用字符串函数并将其用作其他函数的参数。
| 函数 | 结果类型 | 描述 |
|---|---|---|
|
|
数字 |
如果字段缺失或为空字符串,则返回 |
|
|
数字 |
如果字段缺失或为空字符串,或只包含空格,则返回 |
|
|
字符串 |
连结字符串。 |
|
|
字符串 |
如果函数没有第二个参数,它将删除字符串左侧的空格。如果函数有第二个字符串参数,它将不会删除空格。相反,它会从 |
|
|
字符串 |
如果函数没有第二个参数,它将删除字符串右侧的空格。如果函数有第二个字符串参数,它将不会删除空格。相反,它会从 |
|
|
字符串 |
如果函数没有第二个参数,它将删除字符串两端的空格。如果函数有第二个字符串参数,它将不会删除空格。相反,它会从 |
|
|
数字 |
返回 Unicode 代码点中字符串的长度。 |
|
|
字符串 |
将字符串转换为大写。 |
|
|
字符串 |
将字符串转换为小写。 |
|
|
字符串 |
返回从由数值参数指定的索引到字符串末尾的子字符串。如果该函数具有二个参数,它包含要检索的子字符串的长度。例如, |
|
|
字符串 |
将 例如,函数 |
|
|
数字 |
如果 |