本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
布林值、比較、數值、日期時間和其他函數
CloudWatch Logs Insights 支援查詢中的許多其他操作和函數,如以下章節所述。
算術運算子
算術運算子可接受以數值資料類型作為引數,而且會傳回數值結果。算術運算子可用於 filter
和 fields
命令,也可以作為其他函數的引數使用。
作業 | 描述 |
---|---|
|
加法 |
|
減法 |
|
乘法 |
|
除法 |
|
指數 ( |
|
餘數或模數 ( |
布林值運算子
使用布林值運算子 and
、or
和 not
。
注意
僅在傳回 TRUE或 值的函數中使用布林運算子FALSE。
比較運算子
比較運算子可接受以所有資料類型作為引數,而且會傳回布林值結果。比較運算子可用於 filter
命令,也可以作為其他函數的引數使用。
運算子 | 描述 |
---|---|
|
等於 |
|
不等於 |
|
小於 |
|
大於 |
|
小於或等於 |
|
大於或等於 |
數值運算子
數值運算接受數值資料類型作為引數,並傳回數值結果。數值運算可用於 filter
和 fields
命令,也可以作為其他函數的引數使用。
作業 | 結果類型 | 描述 |
---|---|---|
|
數字 |
絕對值 |
|
number |
無條件進位到上限 (大於 |
|
number |
無條件捨去到下限 (小於 |
|
number |
傳回最大值 |
|
number |
傳回最小值 |
|
number |
自然對數 |
|
number |
平方根 |
結構類型
地圖或清單是 CloudWatch Logs 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"
範例:空白結果
針對字串、數字和日期時間函數,地圖和清單會被視為 null。
fields jsonParse(@message) as json_message | display toupper(json_message)
比較映射和清單到任何其他欄位會導致 false
。
注意
stats
不支援在 dedup
、sort
、 和 pattern
中使用地圖和清單。
日期時間函數
日期時間函數
日期時間函數可用於 fields
和 filter
命令,也可以作為其他函數的引數使用。如果查詢中使用了彙總函數,您可以使用這些函數來建立時段。使用由數字和下列其中一項組成的時段:
ms
毫秒s
持續 秒m
持續 分鐘h
持續 小時
例如,10m
是 10 分鐘,1h
是 1 小時。
注意
為您的日期時間函數使用最適當的時間單位。 CloudWatch 日誌會根據您選擇的時間單位限制您的請求。例如,它以 60 為上限,做為任何使用 之請求的最大值s
。因此,如果您指定 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 小時的間隔;或是自訂的時間範圍。您也可以在特定日期之間設定時間段。
函式 | 結果類型 | 描述 |
---|---|---|
|
時間戳記 |
將 您可以使用此操作在查詢中將多筆日誌條目分組在一起。以下範例傳回每小時的例外情況計數。
|
|
時間戳記 |
將時間戳記截斷為指定的期間。例如, |
|
時間戳記 |
將時間戳記無條件進位到指定期間,然後截斷。例如, |
|
時間戳記 |
解譯輸入欄位為自 Unix epoch 以來的毫秒數,並將其轉換為時間戳記。 |
|
number |
將指定欄位中找到的時間戳記轉換為數字,代表自 Unix epoch 以來的毫秒數。例如: |
注意
目前, CloudWatch Logs Insights 不支援篩選具有人類可讀取時間戳記的日誌。
一般函數
一般函數
一般函數可用於 fields
和 filter
命令,也可以作為其他函數的引數使用。
函式 | 結果類型 | 描述 |
---|---|---|
|
Boolean |
如果欄位存在,傳回 |
|
LogField |
傳回清單中的第一個非空值 |
JSON 函式
JSON 函數
在 fields
和 filter
命令中使用 JSON函數,並做為其他 函數的引數。
函式 | 結果類型 | 描述 |
---|---|---|
|
映射 | 清單 | 空白 |
當輸入是JSON物件或JSON陣列的字串表示法時,傳回映射或清單。如果輸入不是其中一個表示法,則傳回空值。 |
|
字串 |
當輸入是JSON物件或JSON陣列的字串表示法時,傳回映射或清單。如果輸入不是其中一個表示法,則傳回空值。從映射或清單資料傳回JSON字串。 |
IP 地址字串函數
IP 地址字串函數
IP 地址字串函數可用於 filter
和 fields
命令,也可以作為其他函數的引數使用。
函式 | 結果類型 | 描述 |
---|---|---|
|
布林值 |
|
|
boolean |
|
|
boolean |
|
|
boolean |
|
|
boolean |
|
|
boolean |
|
字串函數
字串函數
字串函數可用於 fields
和 filter
命令,也可以作為其他函數的引數使用。
函式 | 結果類型 | 描述 |
---|---|---|
|
Number |
如果欄位遺失或是空白字串,傳回 |
|
Number |
如果欄位遺失、是空白字串或只包含空格,傳回 |
|
string |
串連字串。 |
|
string |
如果函數沒有第二個引數,則會移除字串左側的空格。如果函數有第二個字串引數,則不會移除空格。而是從 |
|
string |
如果函數沒有第二個引數,則會移除字串右側的空格。如果函數有第二個字串引數,則不會移除空格。而是從 |
|
string |
如果函數沒有第二個引數,則會移除字串兩側的空格。如果函數有第二個字串引數,則不會移除空格。而是從 |
|
number |
以 Unicode 字碼指標傳回字串的長度。 |
|
string |
將字串轉換成大寫。 |
|
string |
將字串轉換成小寫。 |
|
string |
傳回從數字引數指定的索引到字串結尾的子字串。如果函數有第二個數字引數,則是包含要擷取的子字串長度。例如, |
|
string |
以 例如:函式 |
|
number |
如果 |