如何loginamazon web services(AWS)?

我有一个在Golang中构build的项目,并部署在AWS的Docker实例中。

在内部我创build一个日志文件,程序在其中写入多个日志。

我怎样才能访问该日志文件?

有没有另一种正确的方法来logging?

谢谢

您可以将日志文件从容器挂载到EC2主机。 你可以在运行你的容器时使用-v标志来做到这一点:

 docker run -v /var/log/my_host_log_file.log:/var/log/your_container_log_file.log your-image 

或者,您可以将您的应用程序configuration为login到stdout,并使用syslog作为日志驱动程序(使用--log-driver=syslog开关 )。 您的容器日志将被写入主机上的/var/log/messages

如果您使用AWS,我会build议将日志直接发送到AWS CloudWatch。

首先在AWS Cloudwatch中创build一个新的日志组,例如“Production”。 在您的Docker-Compose.yml(或通过docker run ..)添加AWS Logger:

  logging: driver: "awslogs" options: awslogs-region: "eu-central-1" awslogs-group: "Production" awslogs-stream: "MyApp" 

接下来创build一个具有对AWS Cloudwatch的访问权限的IAM用户,并向Dockerhost添加凭证。

示例IAM策略:

 "Version" "2012-10-17" "Statement" 

“操作”“日志:CreateLogStream”“日志:PutLogEvents”“效果”“允许”“资源”

在Ubuntu上使用systemd:

 "Version" "2012-10-17" "Statement" "Action" "logs:CreateLogStream" "logs:PutLogEvents" "Effect" "Allow" "Resource" 

并添加到文件:

 [Service] Environment"AWS_ACCESS_KEY_ID=<aws_access_key_id>" Environment"AWS_SECRET_ACCESS_KEY=<aws_secret_access_key>" 

跑:

 systemctl daemon-reload service docker restart 

现在您的日志应该出现在AWS Cloudwatch中。

感谢您的回复。

过了一会儿,find解决问题的办法,我find了!

首先,我需要挂载docker-host中的实例内部的文件。

为此,我在我的项目的根文件夹中添加一个名为Dockerrun.aws.json的Json文件( http://docs.aws.amazon.com/es_es/elasticbeanstalk/latest/dg/create_deploy_docker_image.html#create_deploy_docker_image_dockerrun

这是声明共享文件夹(卷)(beetwendocker主机和实例)在哪里我保存我的日志文件的文件。 这一行相当于在docker run命令( https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-data-volume )中添加-v标志。 我这样做,因为我不能将挂载添加到正在运行的实例,我不能通过SSH阻止它。

 { "AWSEBDockerrunVersion": "1", "Volumes": [ { "HostDirectory": "/var/log/", "ContainerDirectory": "/go/src/app/log" } ] } 

然后告诉aws,当我请求logging时,我想下载我的日志文件。 (尾巴(最后100行),捆绑或旋转)我将这些文件添加到我的项目目录中的.ebextension文件夹。 ( http://docs.aws.amazon.com/en_us/elasticbeanstalk/latest/dg/using-features.logging.html#health-logs-extend

Log_bundle.conf

 Files: "/opt/elasticbeanstalk/tasks/bundlelogs.d/log_bundle.conf": Mode: "000755" Owner: root Group: root Content: | /var/log/application.log 

Log_rotate.config

 Files: "/opt/elasticbeanstalk/tasks/bundlelogs.d/log_rotate.conf": Mode: "000755" Owner: root Group: root Content: | /var/log/application.log 

Log_tail.config

 Files: "/opt/elasticbeanstalk/tasks/publishlogs.d/log_tail.conf": Mode: "000755" Owner: root Group: root Content: | /var/log/application.log 

最后,我不尝试Amazon可以观看,但是是下一步。

问候

如果你使用ELK(Elasticsearch,Logstash,Kibana),我会build议使用“logrus”

得到图书馆

去获取github.com/sirupsen/logrus

然后在你的项目中

 package main import ( logrus "github.com/sirupsen/logrus" ) var log = logrus.New() func main() { conn, _ := net.Dial("tcp", "logstash-address") hook := logrustash.New(conn, logrustash.DefaultFormatter(logrus.Fields{"type": "my-app"})) log.Hooks.Add(hook) log.Info("Hello World!") }