使用 Firelens 日誌路由器為 Amazon ECS 建立自訂日誌剖析器 - AWS 方案指引

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

使用 Firelens 日誌路由器為 Amazon ECS 建立自訂日誌剖析器

由 Varun Sharma (AWS) 建立

Summary

Firelens 是 Amazon Elastic Container Service (Amazon ECS) 和 AWS Fargate 的日誌路由器。您可以使用 Firelens 將容器日誌從 Amazon ECS 路由到 Amazon CloudWatch 和其他目的地 (例如 SplunkSumo Logic)。Firelens 使用 FluentdFluent Bit 作為記錄代理程式,這表示您可以使用 Amazon ECS 任務定義參數來路由日誌。

透過選擇在來源層級剖析日誌,您可以分析記錄資料並執行查詢,以更有效率且有效地回應操作問題。由於不同的應用程式有不同的記錄模式,因此您需要使用自訂剖析器來建構日誌,並在最終目的地更輕鬆地搜尋。

此模式使用 Firelens 日誌路由器搭配自訂剖析器,從在 Amazon ECS 上執行的範例 Spring Boot 應用程式將日誌推送至 CloudWatch。然後,您可以使用 Amazon CloudWatch Logs Insights 根據自訂剖析器產生的自訂欄位來篩選日誌。

先決條件和限制

先決條件

  • 作用中的 Amazon Web Services (AWS) 帳戶。

  • AWS Command Line Interface (AWS CLI),安裝在本機機器上並進行設定。

  • 在本機電腦上安裝和設定 Docker。

  • Amazon Elastic Container Registry (Amazon ECR) 上現有的 Spring Boot 型容器化應用程式。 

架構

使用 Firelens 日誌路由器,從在 Amazon ECS 上執行的應用程式將日誌推送至 CloudWatch。

技術堆疊

  • CloudWatch

  • Amazon ECR

  • Amazon ECS

  • Fargate

  • Docker

  • Fluent Bit

工具

  • Amazon ECR – Amazon Elastic Container Registry (Amazon ECR) 是一種 AWS 受管容器映像登錄服務,安全、可擴展且可靠。

  • Amazon ECS – Amazon Elastic Container Service (Amazon ECS) 是一種高度可擴展、快速的容器管理服務,可讓您輕鬆執行、停止和管理叢集上的容器。

  • AWS Identity and Access Management (IAM) – IAM 是一種 Web 服務,可安全地控制對 AWS 服務的存取。

  • AWS CLI – AWS Command Line Interface (AWS CLI) 是一種開放原始碼工具,可讓您使用命令列 shell 中的命令與 AWS 服務互動。

  • Docker – Docker 是開發、運送和執行應用程式的開放平台。

Code

下列檔案會附加至此模式:

  • customFluentBit.zip – 包含要新增自訂剖析和組態的檔案。

  • firelens_policy.json – 包含用來建立 IAM 政策的政策文件。

  • Task.json – 包含 Amazon ECS 的範例任務定義。

史詩

任務描述所需的技能

建立 Amazon ECR 儲存庫。

登入 AWS 管理主控台,開啟 Amazon ECR 主控台,並建立名為 的儲存庫fluentbit_custom

如需詳細資訊,請參閱 Amazon ECR 文件中的建立儲存庫

系統管理員、開發人員

解壓縮 customFluentBit.zip 套件。

 

  1. customFluentBit.zip套件 (已連接) 下載到您的本機電腦。 

  2. 執行下列命令以解壓縮至 customFluentBit目錄: unzip -d customFluentBit.zip

  3. 目錄包含新增自訂剖析和組態所需的下列檔案:

    • parsers/springboot_parser.conf – 包含剖析器指令,並定義自訂剖析器的規則表達式 (regex) 模式。您可以為特定剖析器新增 regex 模式。

    •  conf/parse_springboot.conf – 包含篩選條件和服務指令。

    • Dockerfile

建立自訂 Docker 映像。

  1. 將目錄切換至 customFluentBit

  2. 開啟 Amazon ECR 主控台,選擇fluentbit_custom儲存庫,然後選擇檢視推送命令。 

  3. 上傳您的專案。 

  4. 上傳完成後,複製建置的 URL。當您在 Amazon ECS 中建立容器時,需要此 URL

如需詳細資訊,請參閱 Amazon ECR 文件中的推送 Docker 映像。 

系統管理員、開發人員
任務描述所需的技能

建立 Amazon ECS 叢集

遵循 Amazon ECS 文件中建立叢集的僅限聯網範本一節中的指示來建立 Amazon ECS 叢集

注意

請務必選擇建立 VPC,為您的 Amazon ECS 叢集建立新的虛擬私有雲端 (VPC)。

系統管理員、開發人員
任務描述所需的技能

設定 Amazon ECS 任務執行 IAM 角色。

使用 AmazonECSTaskExecutionRolePolicy受管政策建立 Amazon ECS 任務執行 IAM 角色。如需詳細資訊,請參閱 Amazon ECS 文件中的 Amazon ECS 任務執行 IAM 角色

注意

請務必記錄 IAM 角色的 Amazon Resource Name (ARN)。

系統管理員、開發人員

將 IAM 政策連接至 Amazon ECS 任務執行 IAM 角色。

  1. 使用 firelens_policy.json(連接的) 政策文件建立 IAM 政策。如需詳細資訊,請參閱 IAM 文件中的在 JSON 標籤上建立政策

  2. 將此政策連接至您先前建立的 Amazon ECS 任務執行 IAM 角色。如需詳細資訊,請參閱 IAM 文件中的新增 IAM 政策 (AWS CLI)。 

系統管理員、開發人員

設定 Amazon ECS 任務定義。

  1. 更新Task.json範例任務定義 (已連接) 中的下列區段:

    • taskRoleArn 使用任務執行 IAM 角色的 ARN 更新 executionRoleArn

    • containerDefinitions 使用您先前建立的自訂 Fluent Bit Docker 映像更新 中的映像

    • 使用containerDefinitions應用程式映像的名稱更新 中的映像

  2. 開啟 Amazon ECS 主控台,選擇任務定義,選擇建立新任務定義,然後在選取相容性頁面上選擇 Fargate。   

  3. 選擇透過 Json 設定,將更新Task.json的檔案貼到文字區域,然後選擇儲存

  4. 建立任務定義。

如需詳細資訊,請參閱《Amazon ECS 文件》中的建立任務定義

系統管理員、開發人員
任務描述所需的技能

執行 Amazon ECS 任務。

在 Amazon ECS 主控台上,選擇叢集,選擇您先前建立的叢集,然後執行獨立任務。

如需詳細資訊,請參閱《Amazon ECS 文件》中的執行獨立任務

系統管理員、開發人員
任務描述所需的技能

驗證日誌。

  1. 開啟 CloudWatch 主控台,選擇日誌群組,然後選擇 /aws/ecs/containerinsights/{{cluster_ARN}}/firelens/application

  2. 驗證日誌,特別是自訂剖析器新增的自訂欄位。

  3. 使用 CloudWatch 根據自訂欄位篩選日誌。

系統管理員、開發人員

相關資源

附件

若要存取與本文件相關聯的其他內容,請解壓縮下列檔案: attachment.zip