本文介紹了AWS彈性豆莖Java應(yīng)用程序的默認(rèn)CloudWatch日志位置的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我已使用負(fù)載均衡器和最多2個EC2實例在AWS Elastic Beanstrik環(huán)境中部署了一個JAR文件。
我的環(huán)境似乎正在使用新的統(tǒng)一CloudWatch代理,而不是傳統(tǒng)的CloudWatch日志代理
在控制臺的環(huán)境配置中,我打開了到CloudWatch Logs的實例日志流,現(xiàn)在在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服務(wù)器訪問在access.log
中,甚至我的JAR文件的STDOUT控制臺輸出也在web.stdout.log
中。到目前為止一切順利。
現(xiàn)在假設(shè)我希望我的JAR應(yīng)用程序生成一個日志文件,并在CloudWatch日志中自動拾取它。我已經(jīng)閱讀了Elastic Beanstalk EC2 logging documentation,其中說明我可以在我的應(yīng)用程序中捆綁特殊的.ebextensions
,以指示新的日志記錄位置。如果您的應(yīng)用程序在不屬于您環(huán)境平臺的默認(rèn)配置的位置生成日志。
在短期內(nèi),我不想創(chuàng)建.ebextensions
文件。關(guān)于…的部分A Location…默認(rèn)配置…的一部分引起我的興趣。
彈性豆莖Java平臺日志是否有默認(rèn)位置?換句話說,是否有一些默認(rèn)位置,例如/var/log/app/
,我只需將我的應(yīng)用程序日志記錄到該位置(例如,通過環(huán)境變量配置),并讓新的統(tǒng)一代理的CloudWatch日志自動拾取它們,而無需創(chuàng)建.ebextensions
文件?(作為次佳解決方案,是否有方法可以使用AWS控制臺配置位置?)
推薦答案
在新的統(tǒng)一云監(jiān)控代理中可以非常輕松地進(jìn)行配置。代理拾取目錄中存在的所有配置文件-/etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.d/
您可以在該目錄中創(chuàng)建自定義配置文件
{
"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。這些日志將與默認(rèn)日志組一起出現(xiàn)在CloudWatch日志中。
注意-查看EB-Eng.log,Elastic Beanstrik在從.eb擴(kuò)展名和每個耗盡的prebuild
鉤子運(yùn)行commands
之后,重新設(shè)置了統(tǒng)一的Cloud Watch代理,因此在這些步驟中創(chuàng)建的任何文件都將被刪除。因此,我建議您使用predeploy
掛鉤進(jìn)行配置。
執(zhí)行此操作的示例鉤子-
將掛鉤文件存儲在-.platform/hooks/predeploy/cwa_custom_logs.sh
并確保該文件可在GIT中執(zhí)行。
#!/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
這篇關(guān)于AWS彈性豆莖Java應(yīng)用程序的默認(rèn)CloudWatch日志位置的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,