首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >亚马逊AWS弹性豆柄EBS日志到Cloudwatch (多码头Env)

问亚马逊AWS弹性豆柄EBS日志到Cloudwatch (多码头Env)
EN

Server Fault用户
提问于 2017-09-01 11:52:55
回答 1查看 3.9K关注 0票数 3

我想在云表中查看我所有的日志。我目前有一个多码头弹性豆茎环境。

我选择了将日志推送到cloudwatch,方法是

代码语言:javascript
复制
Elastic Beanstalk > App > Env > Configuration > Software Configuration > CloudWatch Logs

这是启用的。

当我看云表时,我看到了以下几个部分..

代码语言:javascript
复制
/aws/elasticbeanstalk/myapp-staging/var/log/docker-events.log
/aws/elasticbeanstalk/myapp-staging/var/log/eb-activity.log
/aws/elasticbeanstalk/myapp-staging/var/log/eb-ecs-mgr.log
/aws/elasticbeanstalk/myapp-staging/var/log/ecs/ecs-agent.log
/aws/elasticbeanstalk/myapp-staging/var/log/ecs/ecs-init.log

但是我没有看到nginx访问/错误日志。

我的Dockerrun.aws.json里有这个

代码语言:javascript
复制
"mountPoints":[
        {
          "sourceVolume": "awseb-logs-nginx",
          "containerPath": "/var/log/nginx"
        }

如果我SSH到包含此内容的实例,我可以看到这些日志(当我点击URLS时)在/var/log/containers/nginx/access.log的本地路径上生成(如预期的)。

另外,如果我转到EBS >日志并请求最近的日志,我也可以看到它们在访问日志中是什么,它只是没有被发送到CloudWatch?

我想知道我是否必须设置一个具有正确路径的Log Group,我尝试过这样做,但是它没有被填充?

我确信我错过了一些东西,把它推到Cloudwatch上,提前感谢你!

更新:我已经添加了下面的内容,这是建议的要求。该文件位于名为.ebextensions的nginx_logs.conf文件夹中。

代码语言:javascript
复制
packages:
  yum:
    awslogs: []

files:
  "/etc/awslogs/config/nginx_logs.conf" :
    mode: "000600"
    owner: root
    group: root
    content: |
      [/var/log/containers/nginx/access.log]
      log_group_name = `{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "var/log/containers/nginx/access.log"]]}`
      log_stream_name = {instance_id}
      file = /var/log/containers/nginx/access.log*
      [/var/log//containers/nginx/error.log]
      log_group_name = `{"Fn::Join":["/", ["/aws/elasticbeanstalk", { "Ref":"AWSEBEnvironmentName" }, "var/log/containers/nginx/error.log"]]}`
      log_stream_name = {instance_id}
      file = /var/log/containers/nginx/error.log*

commands:
  "01":
    command: chkconfig awslogs on
  "02":
    command: service awslogs restart

仍然没有喜悦,因为当我点击请求日志或请求最后100条日志时,我仍然可以看到它们。但云图里没有任何东西。

EN

回答 1

Server Fault用户

发布于 2017-09-04 11:20:26

根据正式的AWS 文档,以下文件是针对Docker多容器EB环境从盒子中收集的:

  • /var/log/eb-activity.log
  • /var/log/ecs/ecs-init.log
  • /var/log/eb-ecs-mgr.log
  • /var/log/ecs/ecs-agent.log
  • /var/log/docker-vents.log

由于这些路径不包括包含nginx日志的目录,所以它们不会流到CloudWatch中是有意义的。

要流您的日志,看起来您必须配置CloudWatch日志代理来收集容器目录中的文件。有示例配置这里。坦率地说,对于Docker多容器的默认配置并不包括容器日志,这有点奇怪,但是很明显,AWS就是这样实现的。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/871653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档