本文介紹了AWS彈性豆莖Java應用程序的默認CloudWatch日志位置的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我已使用負載均衡器和最多2個EC2實例在AWS Elastic Beanstrik環境中部署了一個JAR文件。
我的環境似乎正在使用新的統一CloudWatch代理,而不是傳統的CloudWatch日志代理
在控制臺的環境配置中,我打開了到CloudWatch Logs的實例日志流,現在在CloudWatch Logs中,我得到了以下組:
/aws/elasticbeanstalk/myapp-myenv/var/log/eb-engine.log
/aws/elasticbeanstalk/myapp-myenv/var/log/eb-hooks.log
/aws/elasticbeanstalk/myapp-myenv/var/log/nginx/access.log
/aws/elasticbeanstalk/myapp-myenv/var/log/nginx/error.log
/aws/elasticbeanstalk/myapp-myenv/var/log/web.stdout.log
這很好。值得注意的是,Web服務器訪問在access.log
中,甚至我的JAR文件的STDOUT控制臺輸出也在web.stdout.log
中。到目前為止一切順利。
現在假設我希望我的JAR應用程序生成一個日志文件,并在CloudWatch日志中自動拾取它。我已經閱讀了Elastic Beanstalk EC2 logging documentation,其中說明我可以在我的應用程序中捆綁特殊的.ebextensions
,以指示新的日志記錄位置。如果您的應用程序在不屬于您環境平臺的默認配置的位置生成日志。
在短期內,我不想創建.ebextensions
文件。關于…的部分A Location…默認配置…的一部分引起我的興趣。
彈性豆莖Java平臺日志是否有默認位置?換句話說,是否有一些默認位置,例如/var/log/app/
,我只需將我的應用程序日志記錄到該位置(例如,通過環境變量配置),并讓新的統一代理的CloudWatch日志自動拾取它們,而無需創建.ebextensions
文件?(作為次佳解決方案,是否有方法可以使用AWS控制臺配置位置?)
推薦答案
在新的統一云監控代理中可以非常輕松地進行配置。代理拾取目錄中存在的所有配置文件-/etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.d/
您可以在該目錄中創建自定義配置文件
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "path_to_file/app1.log",
"log_group_name": "/app/app.log",
"log_stream_name": "{instance_id}"
}
]
}
}
}
}
您可以像這樣擁有multiple config files。這些日志將與默認日志組一起出現在CloudWatch日志中。
注意-查看EB-Eng.log,Elastic Beanstrik在從.eb擴展名和每個耗盡的prebuild
鉤子運行commands
之后,重新設置了統一的Cloud Watch代理,因此在這些步驟中創建的任何文件都將被刪除。因此,我建議您使用predeploy
掛鉤進行配置。
執行此操作的示例鉤子-
將掛鉤文件存儲在-.platform/hooks/predeploy/cwa_custom_logs.sh
并確保該文件可在GIT中執行。
#!/bin/sh
filepath="/etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.d/custom_logs.json"
# Create the file
cat > $filepath << 'EOL'
{
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "path_to_file/app1.log",
"log_group_name": "/app/app.log",
"log_stream_name": "{instance_id}"
}
]
}
}
}
}
EOL
# Change file permissions
chmod 000755 $filepath
chown root:root $filepath
# Restart cloudwatch agent
systemctl restart amazon-cloudwatch-agent.service
這篇關于AWS彈性豆莖Java應用程序的默認CloudWatch日志位置的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,