Amazon web services 将文件日志流式传输到cloudwatch

Amazon web services 将文件日志流式传输到cloudwatch,amazon-web-services,amazon-cloudwatch,Amazon Web Services,Amazon Cloudwatch,我有一个使用docker compose运行docker的EC2实例。 我希望其中一个应用程序写入文件的所有日志都将数据异步发送到CloudWatch。最好有一个单独的容器,它与应用程序容器共享日志目录,运行类似于tail-f的东西,并将输出发送到CloudWatch 我不是专家,但我想Filebeat也有类似的功能,但我不知道是否可以将其配置为发送到CloudWatch。因此我最终使用了 这是我在docker-compose.yml中的服务 cloudwatch: image: i

我有一个使用docker compose运行docker的EC2实例。 我希望其中一个应用程序写入文件的所有日志都将数据异步发送到CloudWatch。最好有一个单独的容器,它与应用程序容器共享日志目录,运行类似于
tail-f
的东西,并将输出发送到CloudWatch

我不是专家,但我想Filebeat也有类似的功能,但我不知道是否可以将其配置为发送到CloudWatch。

因此我最终使用了

这是我在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.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}