本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
檢視 Elastic Beanstalk 環境中 Amazon EC2執行個體的日誌
本主題說明 Elastic Beanstalk 提供的執行個體日誌類型。它也提供擷取和管理它們的詳細說明。
Elastic Beanstalk 環境中的 Amazon EC2執行個體會產生日誌,您可以檢視這些日誌來疑難排解應用程式或組態檔案的問題。由 Web 伺服器、應用程式伺服器、Elastic Beanstalk 平台指令碼建立的日誌, AWS CloudFormation 會儲存在本機個別執行個體上。您可以使用環境管理主控台或 EB 輕鬆擷取。 CLI您也可以設定您的環境,以即時將日誌串流至 Amazon CloudWatch Logs。
結尾日誌是最常使用日誌檔案 (Elastic Beanstalk 操作日誌及來自 web 伺服器或應用程式伺服器的日誌) 的最後 100 行。當您透過環境主控台或 eb logs 請求結尾日誌時,環境中的一個執行個體會將最近的日誌項目串連為單一文字檔案,並上傳至 Amazon S3。
套件日誌為更多日誌檔案的完整日誌,包括來自 yum 和 cron 的日誌以及數個來自 AWS CloudFormation的日誌。當您請求套件日誌時,環境中的執行個體會將完整的日誌檔案封裝到ZIP封存檔中,並將其上傳至 Amazon S3。
若要將輪換日誌上傳至 Amazon S3,環境中的執行個體必須具備執行個體描述檔,其中包含寫入至 Elastic Beanstalk Amazon S3 儲存貯體的許可。當您在 Elastic Beanstalk 主控台首次啟動環境時,Elastic Beanstalk 提示您建立的執行個體描述檔預設即包含這些許可。
擷取執行個體日誌
開啟 Elastic Beanstalk 主控台
,然後在區域清單中選取您的 AWS 區域。 -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
-
在導覽窗格中,選擇日誌。
-
選擇 Request Logs (請求日誌),然後選擇要擷取的日誌類型。欲取得結尾日誌,選擇 Last 100 Lines (最後 100 行)。欲取得套件日誌,選擇 Full Logs (完整日誌)。
-
當 Elastic Beanstalk 完成擷取記錄檔時,請選擇 Download (下載)。
Elastic Beanstalk 會將尾部和套件日誌存放在 Amazon S3 儲存貯體中,並產生預先簽章的 Amazon S3URL,供您用來存取日誌。Elastic Beanstalk 會在 15 分鐘後從 Amazon S3 刪除檔案。
警告
擁有預先簽章 Amazon S3 的任何人URL都可以在刪除檔案之前存取這些檔案。讓 僅供信任的對象URL使用。
注意
您的使用者政策必須具有 s3:DeleteObject
許可。Elastic Beanstalk 會使用您的使用者許可從 Amazon S3 刪除日誌。
若要保留日誌,您可以將環境設定為在日誌輪換後自動發佈至 Amazon S3。若要啟用 Amazon S3 的日誌輪換,請遵循 設定執行個體日誌檢視 中的程序。環境中的執行個體會每小時嘗試上傳已輪換的日誌。
若您的應用程式並未在做為您環境平台預設組態一部分的位置內產生日誌,您可以使用組態檔案 (.ebextensions
) 來延伸預設組態。您可將應用程式的日誌檔案,新增至結尾日誌、套件日誌或日誌輪換。
針對即時日誌串流和長期儲存,請將您的環境設定為將日誌串流至 Amazon CloudWatch Logs。
Amazon EC2執行個體上的日誌位置
日誌存放在您環境中 Amazon EC2執行個體的標準位置。Elastic Beanstalk 會產生下列日誌。
Amazon Linux 2
-
/var/log/eb-engine.log
Amazon Linux AMI(AL1)
注意
在 2022 年 7 月 18 日,Elastic Beanstalk 將基於 Amazon Linux AMI(AL1) 的所有平台分支的狀態設定為已淘汰。如需有關遷移至完全支援的目前 Amazon Linux 2023 平台分支的詳細資訊,請參閱 將您的 Elastic Beanstalk Linux 應用程式遷移到 Amazon Linux 2023 或 Amazon Linux 2。
-
/var/log/eb-activity.log
-
/var/log/eb-commandprocessor.log
Windows Server
-
C:\Program Files\Amazon\ElasticBeanstalk\logs\
-
C:\cfn\log\cfn-init.log
這些日誌會納入部署活動的訊息,包括與組態檔案 (.ebextensions) 相關的訊息。
各個應用程式和 Web 伺服器將日誌存放於自己的資料夾:
-
Apache –
/var/log/httpd/
-
IIS –
C:\inetpub\wwwroot\
-
Node.js –
/var/log/nodejs/
-
nginx –
/var/log/nginx/
-
Passenger –
/var/app/support/logs/
-
Puma –
/var/log/puma/
-
Python –
/opt/python/log/
-
Tomcat –
/var/log/tomcat/
Amazon S3 中的日誌位置
當您自環境請求結尾或套件日誌,或當執行個體上傳輪換日誌時,這些日誌會存放於 Amazon S3 內的 Elastic Beanstalk 儲存貯體。Elastic Beanstalk elasticbeanstalk-
會為您建立環境的每個 AWS 區域建立名為 的儲存貯體。在此儲存貯體內,日誌會存放於此路徑下:region
-account-id
resources/environments/logs/
。logtype
/environment-id
/instance-id
例如,在帳戶 中 AWS 區域中的 Elastic Beanstalk e-mpcwnwheky
環境中i-0a1fd158
,來自執行個體 us-west-2
的日誌123456789012
會存放在下列位置:
-
結尾日誌 –
s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/tail/e-mpcwnwheky/i-0a1fd158
-
套件日誌 –
s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/bundle/e-mpcwnwheky/i-0a1fd158
-
輪換日誌 –
s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/publish/e-mpcwnwheky/i-0a1fd158
注意
您可以在環境管理主控台中找到您的環境 ID。
在結尾和套件日誌產生後的 15 分鐘,Elastic Beanstalk 會自動將其自 Amazon S3 刪除。輪換日誌會保留,直到您將其刪除或移至 S3 Glacier。
Linux 上的日誌輪換設定
在 Linux 平台上,Elastic Beanstalk 會使用 logrotate
來定期輪換日誌。若經過設定,日誌於本機輪換後,將由日誌輪換任務選取並上傳至 Amazon S3。於本機輪換的日誌,預設不會顯示於結尾或套件日誌。
您可於 /etc/logrotate.elasticbeanstalk.hourly/
找到 logrotate
的 Elastic Beanstalk 組態檔案。這些輪換設定為平台特定,未來的平台版本可能會加以變更。如需有關可用設定和範例組態的詳細資訊,請執行 man logrotate
。
定時守護作業 (cron job) 會於 /etc/cron.hourly/
中叫用組態檔案。如需關於 cron
的詳細資訊,請執行 man cron
。
擴展預設日誌任務組態
Elastic Beanstalk 使用 Amazon EC2執行個體上 /opt/elasticbeanstalk/tasks
(Linux) 或 C:\Program Files\Amazon\ElasticBeanstalk\config
(Windows Server) 子資料夾中的檔案,來設定尾部日誌、套件日誌和日誌輪換的任務。
在 Amazon Linux 上:
-
結尾日誌 –
/opt/elasticbeanstalk/tasks/taillogs.d/
-
套件日誌 –
/opt/elasticbeanstalk/tasks/bundlelogs.d/
-
輪換日誌 –
/opt/elasticbeanstalk/tasks/publishlogs.d/
在 Windows Server 上:
-
結尾日誌 –
c:\Program Files\Amazon\ElasticBeanstalk\config\taillogs.d\
-
套件日誌 –
c:\Program Files\Amazon\ElasticBeanstalk\config\bundlelogs.d\
-
輪換日誌 –
c:\Program Files\Amazon\ElasticBeanstalk\config\publogs.d\
例如,Linux 上的檔案 eb-activity.conf
會將兩個日誌檔新增至結尾日誌任務。
/opt/elasticbeanstalk/tasks/taillogs.d/eb-activity.conf
/var/log/eb-commandprocessor.log
/var/log/eb-activity.log
您可使用環境資訊檔案 (.ebextensions
) 將自己的 .conf
檔案新增至這些資料夾。.conf
檔案會列出您應用程式特定的日誌檔案,Elastic Beanstalk 會將其新增至日誌檔案任務。
使用 files
區段將組態檔案新增至您欲修改的任務。例如,下列組態文字會將日誌組態檔案加入至您環境中的每個執行個體。此日誌組態檔案 cloud-init.conf
新增 /var/log/cloud-init.log
到結尾日誌。
files:
"/opt/elasticbeanstalk/tasks/taillogs.d/cloud-init.conf" :
mode: "000755"
owner: root
group: root
content: |
/var/log/cloud-init.log
將此文字新增至副檔名為 .config
的檔案,再將此檔案新增至名為 .ebextensions
的資料夾下原始碼套件中。
~/workspace/my-app
|-- .ebextensions
| `-- tail-logs.config
|-- index.php
`-- styles.css
在 Linux 平台上,您也可以在日誌任務組態中使用萬用字元。此組態檔案會自應用程式根目錄的 .log
資料夾,將副檔名為 log
的所有檔案新增至套件日誌。
files:
"/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" :
mode: "000755"
owner: root
group: root
content: |
/var/app/current/log/*.log
日誌任務組態在 Windows 平台上不支援萬用字元。
注意
為了協助您熟悉日誌自訂程序,您可以使用 EB CLI部署範例應用程式。因此,EB CLI會建立本機應用程式目錄,其中包含具有範例組態的.ebextentions
子目錄。您也可以使用範例應用程式的日誌檔案來探索本主題所述的日誌擷取功能。如需如何使用 EB 建立範例應用程式的詳細資訊CLI,請參閱 EB CLI基本概念。
如需使用組態檔案的詳細資訊,請參閱使用組態檔案 (.ebextensions) 來進行進階的環境自訂。
您可使用組態檔案來擴展日誌輪換,如同擴展結尾日誌和套件日誌。每當 Elastic Beanstalk 輪換自己的日誌並將其上傳至 Amazon S3 時,也會輪換並上傳您的其他日誌。日誌輪換擴展的行為依平台作業系統而異。下列小節描述兩種情況。
於 Linux 上擴展日誌輪換
如Linux 上的日誌輪換設定中所說明,在 Linux 平台上,Elastic Beanstalk 會使用 logrotate
來輪換日誌。當您將應用程式的日誌檔案設定為日誌輪換,該應用程式不需要建立日誌檔案的副本。Elastic Beanstalk 會設定 logrotate
,於每次輪換複製您的應用程式日誌檔案。因此,應用程式在主動寫入日誌期間之外,必須讓日誌檔案保持解鎖狀態。
於 Windows Server 上擴展日誌輪換
在 Windows Server 上,當您將應用程式的日誌檔案設定為日誌輪換,該應用程式必須定期輪換日誌檔案。Elastic Beanstalk 會尋找檔名開頭與您所設定的模式相符的檔案,將其選取以上傳至 Amazon S3。此外,Elastic Beanstalk 會忽略檔名的句點,將句點前的名稱視為基本日誌檔案名稱。
Elastic Beanstalk 會上傳基本日誌檔案的所有版本 (除了最新版本),因其認為最新版本為作用中的應用程式日誌檔案,可能會被鎖定。因此,您的應用程式於輪換之間可鎖定作用中的日誌檔案。
例如,您的應用程式寫入名為 my_log.log
的日誌檔案,而且您在 .conf
檔案中指定了此名稱。應用程式會定期輪換檔案。在 Elastic Beanstalk 輪換循環時,會於日誌檔案資料夾找出下列檔案:my_log.log
、my_log.0800.log
、my_log.0830.log
。Elastic Beanstalk 會將它們視為基本名稱 my_log
的版本。檔案 my_log.log
的修改時間最晚,因此 Elastic Beanstalk 僅會上傳其他兩個檔案:my_log.0800.log
和 my_log.0830.log
。
將日誌檔案串流至 Amazon CloudWatch Logs
您可以在 Elastic Beanstalk 主控台或使用組態選項,設定您的環境將日誌串流到 Amazon CloudWatch Logs。使用 CloudWatch Logs,您環境中的每個執行個體都會將日誌串流到您可以設定的日誌群組,以保留數週或數年,即使在您的環境終止之後也是如此。
所串流的日誌組會依環境而異,不過一律會包含 eb-engine.log
,以及於應用程式前方執行的 nginx 或 Apache 代理伺服器存取日誌。
您可以在建立環境期間或為現有環境,在 Elastic Beanstalk 主控台設定日誌串流。您可以從主控台設定下列選項:啟用/停用日誌串流至 CloudWatch 日誌、設定保留天數,然後從生命週期選項中選取。在以下範例中,日誌儲存會長達 7 天,即使環境終止也一樣。
下列組態檔案的日誌串流保留期間為 180 天,即使環境終止也是如此。
範例 .ebextensions/log-streaming.config
option_settings:
aws:elasticbeanstalk:cloudwatch:logs:
StreamLogs: true
DeleteOnTerminate: false
RetentionInDays: 180