Gar*_*son 2 java amazon-web-services amazon-elastic-beanstalk amazon-cloudwatchlogs
我已使用负载均衡器和最多 2 个 EC2 实例在 AWS Elastic Beanstalk 环境中部署了 JAR 文件。
\n我的环境似乎正在使用新的统一 CloudWatch 代理,而不是旧版 CloudWatch Logs 代理
\n在控制台的环境配置中,我打开了“实例日志流式传输到 CloudWatch Logs”,现在在 CloudWatch Logs 中我得到以下组:
\n/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 Logs 中自动获取它。我已阅读Elastic Beanstalk EC2 日志记录文档,其中指出我可以.ebextensions在应用程序中捆绑特殊内容以指示新的日志记录位置“如果您的应用程序在不属于您的默认配置的位置生成日志,环境的平台”。
短期内我宁愿不创建文件.ebextensions。关于“\xe2\x80\xa6 默认配置 \xe2\x80\xa6 的位置 \xe2\x80\xa6 部分”的部分引起了我的兴趣。
Elastic Beanstalk Java 平台日志是否有默认位置?换句话说,是否有一些默认位置,例如/var/log/app/我可以简单地将应用程序日志记录到(例如通过环境变量配置)并让带有新统一代理的 CloudWatch Logs 自动拾取它们,而无需创建文件.ebextensions?(作为第二个最佳解决方案,有没有办法可以使用 AWS 控制台配置位置?)
在新的统一 CloudWatch 代理中配置此功能非常容易。代理拾取目录中存在的所有配置文件 -/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}"
}
]
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以有多个这样的配置文件。这些日志将与默认日志组一起在 CloudWatch Logs 中提供。
注意 -查看 eb-engine.log,Elastic Beanstalk 在commands从 .ebextension 运行后重新设置统一的 cloudwatch 代理并prebuild为每个部署挂钩,因此在这些步骤中创建的任何文件都将被删除。所以我建议你使用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6239 次 |
| 最近记录: |