将文件日志流式传输到 cloudwatch
Stream file log to cloudwatch
我有一个使用 docker-compose 的 EC2 实例 运行 docker。
我希望其中一个应用程序将所有日志写入文件,以将该数据异步发送到 CloudWatch。最好有一个单独的容器与应用程序容器共享日志目录并运行类似 tail -f
的内容并将输出发送到 CloudWatch。
我不是专家,但我想 Filebeat 做了类似的事情,但不知道我是否可以配置它发送到 CloudWatch。
所以我最终使用了 this docker image
这是我在 docker-compose.yml
的服务
cloudwatch:
image: iconara/awslogs:latest
command: "--region eu-central-1 --config-file /etc/awslogs/app.conf"
volumes:
- ./environment/cloudwatch/conf/awscli.conf:/etc/awslogs/app.conf
- ./environment/cloudwatch/state:/var/lib/awslogs/
- ./logs:/app-logs/general/
- ./project/storage/logs:/app-logs/laravel/
- ~/.aws:/root/.aws
我正在安装凭据,因此我可以使用它在 Mac OSX 上进行开发,这可能在 EC2 实例上不需要,具体取决于您的设置。
我还挂载了状态文件,这样如果容器重新启动,相同的日志就不会被推送两次。
这是我的./environment/cloudwatch/conf/awscli.conf
[general]
state_file = /var/lib/awslogs/agent-state
use_gzip_http_content_encoding = true
[/app-logs/logs/laravel.log]
datetime_format = %Y-%m-%d %H:%M:%S
file = /app-logs/laravel/laravel.log
buffer_duration = 5000
#log_stream_name = {instance_id}
log_stream_name = development
initial_position = start_of_file
log_group_name = /app-logs/laravel/laravel.log
multi_line_start_pattern = {datetime_format}
我有一个使用 docker-compose 的 EC2 实例 运行 docker。
我希望其中一个应用程序将所有日志写入文件,以将该数据异步发送到 CloudWatch。最好有一个单独的容器与应用程序容器共享日志目录并运行类似 tail -f
的内容并将输出发送到 CloudWatch。
我不是专家,但我想 Filebeat 做了类似的事情,但不知道我是否可以配置它发送到 CloudWatch。
所以我最终使用了 this docker image
这是我在 docker-compose.yml
的服务 cloudwatch:
image: iconara/awslogs:latest
command: "--region eu-central-1 --config-file /etc/awslogs/app.conf"
volumes:
- ./environment/cloudwatch/conf/awscli.conf:/etc/awslogs/app.conf
- ./environment/cloudwatch/state:/var/lib/awslogs/
- ./logs:/app-logs/general/
- ./project/storage/logs:/app-logs/laravel/
- ~/.aws:/root/.aws
我正在安装凭据,因此我可以使用它在 Mac OSX 上进行开发,这可能在 EC2 实例上不需要,具体取决于您的设置。 我还挂载了状态文件,这样如果容器重新启动,相同的日志就不会被推送两次。
这是我的./environment/cloudwatch/conf/awscli.conf
[general]
state_file = /var/lib/awslogs/agent-state
use_gzip_http_content_encoding = true
[/app-logs/logs/laravel.log]
datetime_format = %Y-%m-%d %H:%M:%S
file = /app-logs/laravel/laravel.log
buffer_duration = 5000
#log_stream_name = {instance_id}
log_stream_name = development
initial_position = start_of_file
log_group_name = /app-logs/laravel/laravel.log
multi_line_start_pattern = {datetime_format}