本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
join
將來源日誌群組的日誌事件與另一個日誌群組的事件結合,或根據相符欄位查詢結果。
使用 join命令來關聯不同來源之間的相關日誌事件,例如日誌群組,並使用其通用的金鑰,例如相符的請求識別符或交易 IDs。
語法
join type=<join_type> left=<left_alias> right=<right_alias> where <left_alias>.<field>=<right_alias>.<field> (SOURCE <right_log_group>)
Parameters
-
<right_log_group>– 要加入的次要資料來源。 -
<left_alias>和<right_alias>– 用於區分欄位與左 (主要) 和右 (次要) 資料來源的別名。 -
where <field>– 指定用作聯結金鑰的欄位。欄位必須存在於兩個資料來源中。 -
type=<join_type>(選用) – 指定聯結類型。有效的值如下:-
inner(預設) – 僅傳回相符的記錄 -
left– 傳回來自主要資料來源的所有記錄,以及來自次要資料來源的相符記錄
-
範例
範例範例 1:將 API Gateway 請求與 Lambda 執行日誌建立關聯
此範例說明如何將 API Gateway 存取日誌加入 Lambda 函數日誌,以將傳入的請求與其後端處理建立關聯。這有助於疑難排解end-to-end請求流程,並識別哪些 Lambda 調用對應到特定的 API 請求。
filter status >= 500 | join type=inner left=api right=lambda where api.requestId=lambda.requestId (SOURCE '/aws/lambda/my-function') | fields api.requestId, api.status, api.latency, lambda.duration, lambda.memoryUsed | sort api.latency desc
此查詢:
-
查詢 API Gateway 存取日誌和伺服器錯誤的篩選條件 (狀態 >= 500)
-
使用顯示在兩個日誌來源中的
requestId欄位,與 Lambda 函數日誌聯結 -
使用別名 (
api和lambda) 來區分欄位與每個來源 -
傳回顯示 API 延遲以及 Lambda 執行持續時間和記憶體用量的合併資訊
-
依 API 延遲排序結果,以識別最慢的請求
範例範例 2:追蹤跨微服務間的分散式交易
偵錯微服務架構中的問題時,您通常需要跨多個服務追蹤交易。此範例示範如何使用通用交易 ID 從兩個不同的服務加入日誌。
filter eventType = "ORDER_CREATED" | join type=left left=order right=payment where order.transactionId=payment.transactionId (SOURCE '/aws/lambda/payment-service') | filter payment.eventType = "PAYMENT_PROCESSED" or !ispresent(payment.eventType) | fields order.transactionId, order.orderId, order.customerId, payment.paymentStatus, payment.amount | filter payment.paymentStatus != "SUCCESS" or !ispresent(payment.paymentStatus)
此查詢:
-
從訂單服務中的訂單建立事件開始
-
使用
left join來包含所有訂單,甚至是沒有相符付款記錄的訂單 -
使用共用
transactionId欄位與付款處理事件聯結 -
篩選最終結果,僅顯示付款失敗或缺少付款記錄的訂單
此處的左聯結很重要,因為它可確保您看到已建立但從未發生對應付款事件的訂單,這可能表示系統故障。
Behavior (行為)
-
主要資料來源 (左側) 會先處理。
-
次要資料來源會使用指定的聯結金鑰進行評估和比對。
-
在聯結欄位上使用等式比較來執行比對。
-
對於左聯結,來自主要資料來源的不相符記錄會保留為次要欄位的 null 值。
備註與限制
-
僅支援等式 (=) 條件。
-
每個查詢僅支援一個聯結命令。
-
聯結金鑰必須同時存在於兩個資料來源中,且具有相容的類型。
-
使用聯結的查詢可能會掃描更多資料並產生更高的成本。
-
次要資料來源中唯一索引鍵值的數量限制為 50,000 個,以確保查詢效能。
-
不支援聯結右側的子查詢。