本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配 Amazon CloudWatch Logs 使用 Elastic Beanstalk
本主題說明 Amazon CloudWatch Logs 服務可提供給 Elastic Beanstalk 的監控功能。它也會引導您完成組態設定,並列出每個 Elastic Beanstalk 平台的日誌位置。
實作 CloudWatch Logs 可讓您執行下列監控活動:
-
從環境的 Amazon EC2 執行個體監控和封存 Elastic Beanstalk 應用程式、系統和自訂日誌檔案。
-
設定警示,讓您更輕鬆地對指標篩選條件擷取的特定日誌串流事件做出反應。
安裝在環境中每個 Amazon EC2 執行個體上的 CloudWatch Logs 代理程式,會針對您所設定的每個日誌群組,將指標資料點發佈到 CloudWatch 服務。每個日誌群組會套用自己的篩選模式,來判斷哪些日誌串流事件做為資料點傳送到 CloudWatch。屬於同一個日誌群組的日誌串流,會共用相同的保留、監控和存取控制設定。您可以將 Elastic Beanstalk 設定為自動將日誌串流到 CloudWatch 服務,如 將執行個體日誌串流至 CloudWatch Logs 中所述。如需 CloudWatch Logs 的詳細資訊,包括術語和概念,請參閱 Amazon CloudWatch Logs 使用者指南。
除了執行個體日誌,如果您為環境啟用增強行運作狀態,您可以將環境設定為將運作狀態資訊串流到 CloudWatch Logs。請參閱 將 Elastic Beanstalk 環境運作狀態資訊串流至 Amazon CloudWatch Logs。
主題
執行個體日誌串流到 CloudWatch Logs 的必要條件
若要啟用從環境的 Amazon EC2 執行個體到 CloudWatch Logs 的日誌串流,您必須符合以下條件。
-
平台 – 由於此功能僅適用於此版本
或之後發行的平台版本,如果您使用較早的平台版本,請將您的環境更新至目前的平台版本。 -
如果您的 Elastic Beanstalk 執行個體設定檔中未包含 AWSElasticBeanstalkWebTier 或 AWSElasticBeanstalkWorkerTier 受管政策,則您必須將下列程式碼加入您的設定檔中,以啟用此功能。
Elastic Beanstalk 如何設定 CloudWatch Logs
Elastic Beanstalk 會在其建立的每個執行個體上,使用預設的組態設定安裝 CloudWatch 日誌代理程式。如需進一步了解,請參閱 CloudWatch Logs 代理程式參考。
當您啟用執行個體日誌串流到 CloudWatch Logs,Elastic Beanstalk 會將從您環境執行個體的日誌檔案傳送到 CloudWatch Logs。不同的平台會串流不同的日誌。下表根據平台列出了日誌。
平台/平台分支 |
日誌 |
---|---|
Docker/ 平台分支︰執行於 64 位元 Amazon Linux 2 的 Docker |
|
Docker/ 平台分支︰執行於 64 位元 Amazon Linux 2 的 ECS |
|
Go Linux 上的 .NET Core Java/平台分支︰執行於 64 位元 Amazon Linux 2 的 Corretto |
|
Node.js Python |
|
Tomcat PHP |
|
Windows Server 上的 .NET |
|
Ruby |
|
注意
2022 年 7 月 18 日,Elastic Beanstalk 已將所有以 Amazon Linux AMI (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 Logs 中針對其串流的各個日誌檔案,設定日誌群組。若要從 CloudWatch Logs 擷取特定的日誌檔案,您必須了解對應的日誌群組的名稱。日誌群組命名結構描述取決於平台的作業系統。
對於 Linux 平台,使用 /aws/elasticbeanstalk/
做為執行個體日誌檔案位置的前置詞,以取得日誌群組名稱。例如,如果要擷取檔案 environment_name
/var/log/nginx/error.log
,請指定日誌群組名稱 /aws/elasticbeanstalk/
。environment_name
/var/log/nginx/error.log
對於 Windows 平台,請參閱下表中對應到每個日誌檔的日誌群組。
執行個體上的日誌檔 |
日誌群組 |
---|---|
|
|
|
|
|
|
將執行個體日誌串流至 CloudWatch Logs
您可以使用 Elastic Beanstalk 主控台、EB CLI 或組態選項,啟用串流至 CloudWatch Logs 的執行個體日誌。
啟用前,請設定搭配 CloudWatch Logs 代理程式使用的 IAM 許可。您可以將下列的自訂政策,連接到您指派給環境的執行個體設定檔。
使用 Elastic Beanstalk 主控台的執行個體日誌串流
將執行個體日誌串流至 CloudWatch Logs
開啟 Elastic Beanstalk 主控台
,然後在區域清單中選取您的 AWS 區域。 -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
在導覽窗格中,選擇組態。
-
在更新、監控和日誌記錄組態類別中,選擇編輯。
-
在 Instance log streaming to CloudWatch Logs (執行個體日誌串流到 CloudWatch Logs) 下:
-
啟用 Log streaming (日誌串流)。
-
將 Retention (保留) 設為儲存日誌的天數。
-
選取 Lifecycle (生命週期) 設定,其決定是否在環境終止後儲存日誌。
-
-
若要儲存變更,請選擇頁面底部的儲存變更。
您在啟用日誌串流後,返回 Software (軟體) 組態類別或頁面,並且尋找 Log Groups (日誌群組) 連結。按一下此連結,在 CloudWatch 主控台中查看您的日誌。
使用 EB CLI 執行個體日誌串流
若要使用 EB CLI 將執行個體日誌串流到 CloudWatch Logs,請使用 eb logs 命令。
$ eb logs --cloudwatch-logs enable
您也可以使用 eb logs 擷取 CloudWatch Logs 的日誌,您可以擷取所有環境的執行個體日誌,或使用命令的許多選項,以指定要擷取的日誌子集。例如,以下命令為您的環境中擷取整組的執行個體日誌,並將它們儲存到 .elasticbeanstalk/logs
底下目錄。
$ eb logs --all
尤其是,--log-group
選項可讓您擷取特定日誌群組的執行個體日誌,其對應特定現場執行個體日誌檔。若要這樣做,您需要知道對應到您要擷取的日誌檔案的日誌群組名稱。您可以在 Elastic Beanstalk 如何設定 CloudWatch Logs 中尋找此資訊。
使用組態檔案的執行個體日誌串流
當您建立或更新環境時,您可以使用組態檔案來設定與配置執行個體日誌串流到 CloudWatch Logs。以下範例組態檔啟用預設執行個體日誌串流。Elastic Beanstalk 為您環境的平台串流預設的日誌檔組合。若要使用此範例,可將文字複製到您的應用程式來源套件最上層,.ebextensions
目錄中具有 .config
副檔名的檔案。
option_settings: - namespace: aws:elasticbeanstalk:cloudwatch:logs option_name: StreamLogs value: true
自訂日誌檔串流
與 CloudWatch Logs 的 Elastic Beanstalk 整合不會直接支援您的應用程式所產生的自訂日誌檔串流。若要串流自訂日誌,請使用組態檔案直接安裝 CloudWatch 代理程式,並設定要推送的檔案。如需範例組態檔,請參閱 logs-streamtocloudwatch-linux.config
注意
此範例不適用於 Windows 平台。
如需設定 CloudWatch Logs 的詳細資訊,請參閱《Amazon CloudWatch 使用者指南》中的 CloudWatch 代理程式組態檔案參考。 Amazon CloudWatch
疑難排解 CloudWatch Logs 整合
找不到環境執行個體日誌
如果您在 CloudWatch Logs 中找不到一些預期的環境執行個體日誌,請調查下列常見問題:
-
您的 IAM 角色缺少所需的 IAM 權限。
-
您在不支援 CloudWatch Logs AWS 區域 的 中啟動環境。
-
其中一個自訂日誌檔不存在於您指定的路徑。
應用程式日誌遺失或間歇性
如果您的 Elastic Beanstalk 應用程式日誌 (/var/log/web.stdout.log
) 似乎遺失或間歇性,這可能是由於 rsyslog 和日誌中的預設速率限制設定所致。雖然完全停用速率限制可以解決此問題,但不建議這麼做,因為它可能會導致磁碟使用量過高、可能拒絕服務或意外日誌爆量期間系統效能降低。反之,您可以使用下列 調整速率限制.ebextensions configuration
調節問題
如果同時啟動大量執行個體的 Elastic Beanstalk 操作傳回類似 的訊息Error: fail to create log stream: ThrottlingException: Rate exceeded
,則會從對 CloudWatch API 的太多呼叫進行限流。
若要解決限流問題,請採取下列其中一個動作:
-
使用較小的批次大小搭配滾動部署,以減少並行更新。
-
請求提高您 AWS 帳戶的 CreateLogStream 每秒交易數 (TPS) 限制服務配額。如需詳細資訊,請參閱《Amazon CloudWatch Logs 使用者指南》中的 CloudWatch Logs 配額和管理您的 CloudWatch Logs 服務配額 CloudWatch。 Amazon CloudWatch