Amazon Athena CloudWatch 連 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon Athena CloudWatch 連

Amazon Athena CloudWatch 連接器可讓 Amazon Athena 進行通訊,以 CloudWatch 便您可以使用 SQL 查詢日誌資料。

連接器會將您的資料架構對映 LogGroups 為資料架構,並 LogStream 將每個連接 連接器也會對映包含 LogStreams 中所有內容的特殊all_log_streams視圖 LogGroup。此檢視可讓您一次查詢所有記錄檔,而不是 LogStream 逐一搜尋每個記錄。 LogGroup

必要條件

參數

使用本節中的 Lambda 環境變數來設定 CloudWatch 連接器。

  • spill_bucket - 針對超過 Lambda 函數限制的資料,指定 Amazon S3 儲存貯體。

  • spill_prefix - (選用) 預設為指定的 spill_bucket 中名為 athena-federation-spill 的子資料夾。我們建議您在此位置設定 Amazon S3 儲存生命週期,以刪除超過預定天數或小時數的溢出。

  • spill_put_request_headers – (選用) 用於溢出的 Amazon S3 putObject 請求的請求標頭和值的 JSON 編碼映射 (例如,{"x-amz-server-side-encryption" : "AES256"})。如需其他可能的標頭,請參閱 Amazon 簡單儲存服務 API 參考PutObject中的。

  • kms_key_id - (選用) 依預設,任何溢出到 Amazon S3 的資料都會使用 AES-GCM 驗證加密模式和隨機產生的金鑰進行加密。為了讓您的 Lambda 函數使用 KMS 產生的更強大的加密金鑰,例如 a7e63k4b-8loc-40db-a2a1-4d0en2cd8331,您可以指定 KMS 金鑰 ID。

  • disable_spill_encryption - (選用) 當設定為 True 時,停用溢出加密。預設為 False,因此溢出 S3 的資料會使用 AES-GCM 進行加密 — 使用隨機產生的金鑰或 KMS 來產生金鑰。停用溢出加密可以提高效能,尤其是如果溢出位置使用伺服器端加密

此連接器也支援 AIMD 擁塞控制,以處理 CloudWatch 透過 Amazon Athena 查詢聯合開發套件建構的節流事件。ThrottlingInvoker您可以透過設定下列任何選用的環境變數來調整預設限流行為:

  • throttle_initial_delay_ms - 在第一個擁塞事件之後套用的初始呼叫延遲。預設值為 10 毫秒。

  • throttle_max_delay_ms - 呼叫之間的最大延遲。您可以透過將其分成 1000 毫秒來衍生 TPS。預設值為 1000 毫秒。

  • throttle_decrease_factor - Athena 降低呼叫速率的係數。預設值為 0.5

  • throttle_increase_ms— Athena 降低呼叫延遲的速率。預設值為 10 毫秒。

資料庫和資料表

Athena CloudWatch 連接器會將您 LogGroups 的結構描述 (也就是資料庫) 對應 LogStream 為資料表。連接器也會對映包含 LogStreams 中所有內容的特殊all_log_streams視圖 LogGroup。此檢視可讓您一次查詢所有記錄檔,而不是 LogStream逐一搜尋每個記錄。 LogGroup

Athena CloudWatch 連接器對應的每個表格都具有下列結構描述。此結構描述與記 CloudWatch 錄檔提供的欄位相符。

  • log_stream-一VARCHAR個包含該行所在 LogStream 的名稱。

  • time - 一個 INT64,它包含產生日誌行時的 epoch 時間。

  • message - 包含日誌消息的 VARCHAR

範例

下列範例顯示如何對指定的執行SELECT查詢 LogStream。

SELECT * FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."log_stream_name" LIMIT 100

下面的例子演示了如何使用all_log_streams視圖來對所有 LogStreams 在指定的執行查詢 LogGroup。

SELECT * FROM "lambda:cloudwatch_connector_lambda_name"."log_group_path"."all_log_streams" LIMIT 100

所需的許可

如需詳細了解此連接器所需的 IAM 政策,請檢閱 athena-cloudwatch.yaml 檔案的 Policies 部分。以下清單摘要說明所需的許可。

  • Amazon S3 寫入存取 - 連接器需要 Amazon S3 中某個位置的寫入存取權,以便從大型查詢中溢寫結果。

  • Athena GetQueryExecution — 當上游 Athena 查詢終止時,連接器會使用此權限快速失敗。

  • CloudWatch 防護記錄讀取/寫入 — 連接器會使用此權限來讀取您的防護記錄資料,並寫入其診斷記錄。

效能

Athena CloudWatch 連接器會平行處理查 CloudWatch 詢所需的記錄串流掃描,嘗試將查詢最佳化。對於特定時間週期篩選器,述詞下推會在 Lambda 函數和日誌內 CloudWatch 執行。

為了獲得最佳效能,請僅使用小寫作為日誌群組名稱和日誌串流名稱。使用混合大小寫會導致連接器執行運算密集程度較高的不區分大小寫搜尋。

直通查詢

CloudWatch 連接器支援使用CloudWatch 記錄見解查詢語法的傳遞查詢。如需有關 CloudWatch 日誌洞見的詳細資訊,請參閱 Amazon CloudWatch 日誌使用者指南中的使用日誌洞察分析 CloudWatch 日誌資料

若要使用建立傳遞查詢 CloudWatch,請使用下列語法:

SELECT * FROM TABLE( system.query( STARTTIME => 'start_time', ENDTIME => 'end_time', QUERYSTRING => 'query_string', LOGGROUPNAMES => 'log_group-names', LIMIT => 'max_number_of_results' ))

下列範例 CloudWatch 傳遞查詢會在duration欄位不等於 1000 時篩選該欄位。

SELECT * FROM TABLE( system.query( STARTTIME => '1710918615308', ENDTIME => '1710918615972', QUERYSTRING => 'fields @duration | filter @duration != 1000', LOGGROUPNAMES => '/aws/lambda/cloudwatch-test-1', LIMIT => '2' ))

授權資訊

Amazon Athena CloudWatch 連接器專案是根據阿帕奇- 2.0 授權進行授權。

其他資源

如需有關此連接器的其他資訊,請造訪 GitHub .com 上的對應網站