使用日誌寫入 Amazon 數據 Firehose 件 CloudWatch - Amazon 數據 Firehose

Amazon 數據 Firehose 以前被稱為 Amazon Kinesis Data Firehose

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

使用日誌寫入 Amazon 數據 Firehose 件 CloudWatch

CloudWatch 可以使用 CloudWatch 訂閱過濾器將日誌事件發送到 Firehose。如需詳細資訊,請參閱 Amazon 資料 Firehose 的訂閱篩選器

CloudWatch 記錄事件會以壓縮的 gzip 格式傳送至 Firehose。如果您想要將解壓縮的記錄事件傳送至 Firehose 目的地,可以使用 Firehose 中的解壓縮功能來自動解壓縮記錄檔。 CloudWatch

重要

目前,Firehose 不支援將 CloudWatch 日誌傳遞到 Amazon OpenSearch 服務目的地,因為 Amazon 將多個日誌事件 CloudWatch 合併到一個 Firehose 記錄中,而且 Amazon OpenSearch 服務無法在一個記錄中接受多個日誌事件。作為替代方案,您可以考慮在 CloudWatch 日誌中使用 Amazon OpenSearch 服務的訂閱過濾器

記錄檔解壓縮 CloudWatch

如果您使用 Firehose 傳送 CloudWatch 記錄檔,並且想要將解壓縮的資料傳送到 Firehose 串流目的地,請使用 Firehose 資料格式轉換 (實木複合地板、ORC) 或動態磁碟分割。您必須為您的 Firehose 串流啟用解壓縮功能。

您可以使用 AWS Management Console、 AWS Command Line Interface 或 AWS SDK 啟用解壓縮。

注意

如果您在串流上啟用解壓縮功能,請僅將該串流用於 CloudWatch 記錄訂閱篩選器,而不是針對付費記錄檔使用。如果您在用來擷取 CloudWatch 記錄和付費記錄的串流上啟用解壓縮功能,則 Firehose 的付費記錄擷取會失敗。此解壓縮功能僅適用於 CloudWatch 記錄檔。

記錄檔解壓縮後的訊息擷取 CloudWatch

當您啟用解壓縮時,您也可以選擇啟用訊息擷取。使用訊息擷取時,Firehose 會從解壓縮的記錄檔記錄中過濾掉所有中繼資料,例如擁有者、日誌群組、 CloudWatch 日誌串流及其他中繼資料,並僅傳送訊息欄位內的內容。如果您要將資料傳送至 Splunk 目的地,您必須開啟訊息擷取功能,Splunk 才能剖析資料。以下是有和沒有消息提取解壓縮後的示例輸出。

圖 1:解壓縮後沒有消息提取的樣本輸出:

{ "owner": "111111111111", "logGroup": "CloudTrail/logs", "logStream": "111111111111_CloudTrail/logs_us-east-1", "subscriptionFilters": [ "Destination" ], "messageType": "DATA_MESSAGE", "logEvents": [ { "id": "31953106606966983378809025079804211143289615424298221568", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root1\"}" }, { "id": "31953106606966983378809025079804211143289615424298221569", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root2\"}" }, { "id": "31953106606966983378809025079804211143289615424298221570", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root3\"}" } ] }

圖 2:使用消息提取解壓縮後的樣本輸出:

{"eventVersion":"1.03","userIdentity":{"type":"Root1"} {"eventVersion":"1.03","userIdentity":{"type":"Root2"} {"eventVersion":"1.03","userIdentity":{"type":"Root3"}

啟用和停用解壓縮

您可以使用 AWS Management Console、 AWS Command Line Interface 或 AWS SDK 來啟用和停用解壓縮。

在新的資料串流上啟用解壓縮 AWS Management Console

若要在新資料串流上啟用解壓縮,請使用 AWS Management Console
  1. 登入 AWS Management Console 並開啟運動主控台,網址為 https://console.aws.amazon.com/kinesis

  2. 在導航窗格中選擇 Amazon 數據 Firehose

  3. 選擇「建立 Firehose 串流」。

  4. 在「選擇源和目的地」下

    來源

    您的 Firehose 串流的來源。選擇下列其中一個來源:

    • 直接放入 — 選擇此選項可建立製作者應用程式直接寫入的 Firehose 串流。如需與 Firehose 中 Direct PUT 整合的 AWS 服務、代理程式和開放原始碼服務清單,請參閱節。

    • Kinesis 串流:選擇此選項可設定使用 Kinesis 資料串流作為資料來源的 Firehose 串流。然後,您可以使用 Firehose 輕鬆地從現有 Kinesis 資料串流讀取資料,並將其載入目標。如需詳細資訊,請參閱使用 Kinesis Data Streams 寫入至 Firehose

    目的地

    Firehose 串流的目的地。選擇下列其中一項:

    • Amazon S3

    • Splunk

  5. Firehose 串流名稱下,輸入串流的名稱。

  6. (選擇性) 在轉換記錄下:

    • 在「解壓縮來自 Amazon CloudWatch 日誌的來源記錄」區段中,選擇「開啟解壓縮」。

    • 如果要在解壓縮後使用訊息擷取,請選擇 [開啟訊息擷取]。

在現有資料串流上啟用解壓縮 AWS Management Console

如果您的 Firehose 串流具有 Lambda 函數來執行解壓縮,您可以使用 Firehose 解壓縮功能來取代它。在繼續之前,請檢閱 Lambda 函數程式碼,確認它只執行解壓縮或訊息擷取。Lambda 函數的輸出看起來應類似於上一節中的 [圖 1] 或 [圖 2] 所示的範例。如果輸出看起來相似,您可以使用下列步驟取代 Lambda 函數。

  1. 將您目前的 Lambda 函數取代為此藍圖。新的藍圖 Lambda 函數會自動偵測傳入資料是壓縮還是解壓縮。它僅在其輸入數據被壓縮時執行解壓縮。

  2. 使用內建的 Firehose 選項來開啟解壓縮功能。

  3. 啟用 Firehose 串流的 CloudWatch 指標 (如果尚未啟用)。監視測量結果 CloudWatchProcessorLambda _ IncomingCompressedData 並等待此測量結果變更為零。這會確認傳送至 Lambda 函數的所有輸入資料都已解壓縮,而且不再需要 Lambda 函數。

  4. 移除 Lambda 資料轉換,因為您不再需要它來解壓縮串流。

使用停用解壓縮 AWS Management Console

若要停用資料串流上的解壓縮,請使用 AWS Management Console

  1. 登入 AWS Management Console 並開啟運動主控台,網址為 https://console.aws.amazon.com/kinesis

  2. 在導航窗格中選擇 Amazon 數據 Firehose

  3. 選擇您要編輯的「Firehose」串流。

  4. Firehose 串流詳細資料頁面上,選擇組態索引標籤。

  5. 在「轉換和轉換記錄」區段中,選擇 「編輯」。

  6. 在「從 Amazon CloudWatch 日誌解壓縮來源記錄」下方,清除「開啟解壓縮」,然後選擇「儲存變更」。

常見問答集

如果在解壓縮過程中出現錯誤,源數據會發生什麼?

如果 Amazon Data Firehose 無法解壓縮記錄,則記錄會按原樣 (以壓縮格式) 傳送至您在 Firehose 串流建立期間指定的錯誤 S3 儲存貯體。除了記錄之外,交付的物件還包含錯誤代碼和錯誤訊息,這些物件將傳遞到名為的 S3 儲存貯體前綴decompression-failed。在記錄解壓失敗後,Firehose 會繼續處理其他紀錄。

如果在成功解壓縮後處理管道中出現錯誤,源數據會發生什麼?

如果 Amazon Data Firehose 在解壓縮後 (例如動態分割和資料格式轉換) 在處理步驟中發生錯誤,則記錄會以壓縮格式傳送到您在 Firehose 串流建立時間期間指定的錯誤 S3 儲存貯體。除了記錄之外,傳送的物件也包含錯誤碼和錯誤訊息。

如果出現錯誤或異常,您將如何通知?

如果解壓縮期間發生錯誤或例外狀況,如果您設定 CloudWatch 記錄檔,Firehose 會將錯誤訊息記錄到 CloudWatch 記錄檔中。此外,Firehose 還會將指標傳送至您可以監控的 CloudWatch 度量。您也可以根據 Firehose 發出的指標,選擇性地建立警示。

put操作不來自 CloudWatch 日誌時會發生什麼情況?

如果客戶puts不來自 CloudWatch 記錄檔,則會傳回下列錯誤訊息:

Put to Firehose failed for AccountId: <accountID>, FirehoseName: <firehosename> because the request is not originating from allowed source types.

Firehose 針對解壓縮功能發出哪些指標?

Firehose 會發出每個記錄的減壓指標。您應該選擇期間(1 分鐘),統計(總和),日期範圍以獲取DecompressedRecords失敗或成功或失DecompressedBytes敗或成功的數量。如需更多詳細資訊,請參閱 CloudWatch 日誌解壓縮測量結果