本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Elastic Beanstalk 與 Amazon 日誌 CloudWatch
本主題說明 Amazon CloudWatch 日誌服務可提供給 Elastic Beanstalk 的監控功能。它還會引導您完成配置設置,並列出每個 Elastic Beanstalk 平台的日誌位置。
實作 CloudWatch 記錄可讓您執行下列監視活動:
-
從環境的 Amazon EC2 執行個體監控和存檔 Elastic Beanstalk 應用程式、系統和自訂日誌檔。
-
設定警示,讓您可以更輕鬆地回應指標篩選器擷取的特定記錄資料流事件。
環境中每個 Amazon EC2 執行個體上安裝的 CloudWatch 日誌代理程式會將指標資料點發佈到您設定的每個日誌群組的 CloudWatch 服務。每個記錄群組都會套用自己的篩選器模式,以決定要以資料點形式傳送到 CloudWatch 哪些記錄串流事件。屬於同一個日誌群組的日誌串流,會共用相同的保留、監控和存取控制設定。您可以將 Elastic Beanstalk 設定為自動將記錄串流至 CloudWatch 服務,如中所述。將執行個體記錄檔串流至 CloudWatch 如需有關 CloudWatch 日誌的詳細資訊,包括術語和概念,請參閱 Amazon CloudWatch 日誌使用者指南。
除了執行個體記錄之外,如果您為環境啟用增強的健全狀況,您可以設定環境將健全狀況資訊串流至 CloudWatch 記錄檔。請參閱 將 Elastic Beanstalk 環境運作狀態資訊串流至 Amazon CloudWatch Logs。
主題
執行個體記錄串流至 CloudWatch 記錄檔的必要
若要啟用將日誌從環境的 Amazon EC2 執行個體串流到 CloudWatch Logs,您必須符合下列條件。
-
平台 – 由於此功能僅適用於此版本
或之後發行的平台版本,如果您使用較早的平台版本,請將您的環境更新至目前的平台版本。 -
如果您的 E AWSElasticBeanstalkWorkerTierlastic Beanstalk 執行個體設定檔中沒有AWSElasticBeanstalkWebTier或 Elastic Beanstalk 管理政策,則必須將以下內容新增至您的設定檔以啟用此功能。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": [ "*" ] } ] }
Elastic Beanstalk 如何設置日誌 CloudWatch
Elastic Beanstalk 會在其建立的每個執行個體上安裝具有預設組態設定的 CloudWatch 記錄代理程式。若要深入瞭解CloudWatch 記錄代理程式參考資料。
當您啟用執行個體記錄串流至 CloudWatch 記錄檔時,Elastic Beanstalk 會將記錄檔從您環境的執行個體傳送至 CloudWatch 記錄檔。不同的平台會串流不同的日誌。下表根據平台列出了日誌。
平台/平台分支 |
日誌 |
---|---|
Docker/ 平台分支︰執行於 64 位元 Amazon Linux 2 的 Docker |
|
Docker/ 平台分支:ECS在 64 位 Amazon Linux 2 上運行 |
|
Go 。 NET核心 Java/平台分支︰執行於 64 位元 Amazon Linux 2 的 Corretto |
|
Node.js Python |
|
Tomcat PHP |
|
。 NET在視窗伺服器上 |
|
Ruby |
|
注意
2022 年 7 月 18 日,Elastic Beanstalk 將基於 Amazon LinuxAMI()AL1的所有平台分支的狀態設置為已退休。如需有關遷移至完全支援的目前 Amazon Linux 2023 平台分支的詳細資訊,請參閱 將您的 Elastic Beanstalk Linux 應用程式遷移到 Amazon Linux 2023 或 Amazon Linux 2。
下表依平台列出從以 Amazon Linux 為基礎的平台分支上執行個體串流的日誌檔案 AMI (之前的是 Amazon Linux 2)。
平台/平台分支 |
日誌 |
---|---|
Docker/ 平台分支︰執行於 64 位元 Amazon Linux 的 Docker |
|
Docker/ 平台分支︰執行於 64 位元 Amazon Linux 的多容器 Docker |
|
Glassfish (預先設定的 Docker) |
|
Go |
|
Java/ 平台分支︰執行於 64 位元 Amazon Linux 的 Java 8 平台分支︰執行於 64 位元 Amazon Linux 的 Java 7 |
|
Tomcat |
|
Node.js |
|
PHP |
|
Python |
|
Ruby/ 平台分支︰執行於 64 位元 Amazon Linux 的 Puma with Ruby |
|
Ruby/ 平台分支︰執行於 64 位元 Amazon Linux 的 Passenger with Ruby |
|
Elastic Beanstalk 會在記錄檔中為其串流的各種 CloudWatch 記錄檔設定記錄群組。若要從 CloudWatch 防護記錄擷取特定的記錄檔,您必須知道對應記錄群組的名稱。日誌群組命名結構描述取決於平台的作業系統。
對於 Linux 平台,使用 /aws/elasticbeanstalk/
做為執行個體日誌檔案位置的前置詞,以取得日誌群組名稱。例如,如果要擷取檔案 environment_name
/var/log/nginx/error.log
,請指定日誌群組名稱 /aws/elasticbeanstalk/
。environment_name
/var/log/nginx/error.log
對於 Windows 平台,請參閱下表中對應到每個日誌檔的日誌群組。
執行個體上的日誌檔 |
日誌群組 |
---|---|
|
|
|
|
|
|
將執行個體記錄檔串流至 CloudWatch
您可以使用 Elastic Beanstalk 主控台、EB CLI 或組態選項,啟用執行個體 CloudWatch 記錄串流至記錄。
啟用它之前,請先設定與 CloudWatch Logs 代理程式搭配使用的IAM權限。您可以將下列的自訂政策,連接到您指派給環境的執行個體設定檔。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "*" ] } ] }
使用 Elastic Beanstalk 主控台的執行個體日誌串流
將執行個體記錄串流至 CloudWatch 記錄
開啟彈性魔豆控制台
,然後在區域清單中選取您的. AWS 區域 -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
在導覽窗格中,選擇組態。
-
在更新、監控和日誌記錄組態類別中,選擇編輯。
-
在「串流至 CloudWatch 記錄檔」下方:
-
啟用 Log streaming (日誌串流)。
-
將 Retention (保留) 設為儲存日誌的天數。
-
選取 Lifecycle (生命週期) 設定,其決定是否在環境終止後儲存日誌。
-
-
若要儲存變更,請選擇頁面底部的儲存變更。
您在啟用日誌串流後,返回 Software (軟體) 組態類別或頁面,並且尋找 Log Groups (日誌群組) 連結。按一下此連結,即可在 CloudWatch 主控台中查看您的記錄。
使用 EB 進行執行個體記錄串流 CLI
若要使用 EB 啟用執行個體 CloudWatch 記錄檔串流至記錄檔CLI,請使用指eb logs令。
$ eb logs --cloudwatch-logs enable
您也可以使用eb logs從記錄擷取 CloudWatch 記錄檔。您可以擷取所有環境的執行個體日誌,或使用命令的許多選項,以指定要擷取的日誌子集。例如,以下命令為您的環境中擷取整組的執行個體日誌,並將它們儲存到 .elasticbeanstalk/logs
底下目錄。
$ eb logs --all
尤其是,--log-group
選項可讓您擷取特定日誌群組的執行個體日誌,其對應特定現場執行個體日誌檔。若要這樣做,您需要知道對應到您要擷取的日誌檔案的日誌群組名稱。您可以在 Elastic Beanstalk 如何設置日誌 CloudWatch 中尋找此資訊。
使用組態檔案的執行個體日誌串流
建立或更新環境時,您可以使用設定檔來設定執行個體記錄檔並設定串流至 CloudWatch 記錄檔。以下範例組態檔啟用預設執行個體日誌串流。Elastic Beanstalk 為您環境的平台串流預設的日誌檔組合。若要使用此範例,可將文字複製到您的應用程式來源套件最上層,.ebextensions
目錄中具有 .config
副檔名的檔案。
option_settings: - namespace: aws:elasticbeanstalk:cloudwatch:logs option_name: StreamLogs value: true
自訂日誌檔串流
Elastic Beanstalk 與 CloudWatch 日誌集成不直接支持應用程序生成的自定義日誌文件的流式傳輸。若要串流自訂記錄檔,請使用組態檔直接安裝 CloudWatch 代理程式,並設定要推送的檔案。如需範例組態檔,請參閱 logs-streamtocloudwatch-linux.config
注意
此範例不適用於 Windows 平台。
如需有關設定 CloudWatch 日誌的詳細資訊,請參閱 Amazon CloudWatch 使用者指南中的CloudWatch 代理程式組態檔參考。
疑難排解 CloudWatch 記錄檔
如果您在 Logs 中找不到預期的某些環境執行個體 CloudWatch 記錄檔,可以調查下列常見問題:
-
您的IAM角色缺少必要的IAM權限。
-
您在不支援 CloudWatch 記錄檔的環境中啟動。 AWS 區域
-
其中一個自訂日誌檔不存在於您指定的路徑。