amazon-cloudwatch-agent 在每次應用程式重新載入時關閉

amazon-cloudwatch-agent 在每次應用程式重新載入時關閉

我在 Elastic Beanstalk 上有一個 Tomcat 應用程序,我想將日誌發送到 Cloudwatch Logs。為此,我設定了 log4j 來寫入文件,並在 中.ebextension安裝amazon-cloudwatch-agent並運行。

commands:
#  00_download_and_install:
#    command: rpm --upgrade --force https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
  01_start:
    command: /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json -s
packages:
  yum:
    amazon-cloudwatch-agent: []
files:
  "/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json":
    content: |
       {...
       }

不幸的是,每次我將應用程式部署到 Elastic Beanstalk 時,代理都會關閉,我必須透過 ssh 手動重新啟動它。

答案1

如果您在環境配置中將預設日誌流設定為停用,則 Beanstalk 將在部署期間停止 cloudwatch 代理程式。不幸的是,它在執行用於啟動代理程式的 ebextension 命令後不久就會執行此操作。

為了解決這個問題,我使用了平台 postdeploy 鉤子,該鉤子在部署後執行,從而覆蓋 beanstalk 預設的代理關閉。

只需將包含啟動命令的 shell 腳本放入應用程式套件的 ./platform/hooks/postdeploy/ 中即可。

相關內容