设置CloudWatch日志的合理方法(awslogs-agent)

问题描述 投票:2回答:2

tl; dr cloudwatch代理的配置是#$%^。有任何直截了当的方式吗?

我想要一个地方来存储日志,所以我使用了Amazon CloudWatch Logs Agent。起初,我似乎只是添加一个资源,说“创建一个日志组,然后一个日志流并发送此文件,谢谢” - 所有声明和整洁,但......

根据this doc,我必须设置JSON配置,该配置创建了一个BASH脚本,该脚本下载了一个Python脚本,该脚本设置了在其他地方使用另一种语言生成的配置的服务。

我认为日志记录是经常使用的东西,因此必须有声明性配置方式,而不是这种4语言疯狂组合。我错过了一些东西,还是操作世界如此痛苦?

谢谢你的想法!

amazon-web-services elastic-beanstalk amazon-cloudwatch
2个回答
1
投票

您已将doco特别链接到CloudFormation,因此一堆复杂性可能与该上下文相关联。

以下是Cloudwatch Logs Agent的独立文档:

如果您使用的是亚马逊Linux,则可以通过yum安装“awslogs”系统软件包。完成后,您可以通过确保CLI的配置文件中包含以下部分来启用AWS CLI的日志插件:

[plugins]
cwlogs = cwlogs

例如,系统包应该在/etc/awslogs/awscli.conf下创建一个文件。您可以通过设置...来使用该文件

AWS_CONFIG_FILE=/etc/awslogs/awscli.conf

......环境变量。

一旦完成,您可以:

$ aws logs push help

$ cat /path/to/some/file | aws logs push [options]

代理还附带帮助程序以保持各种日志文件同步。


1
投票

“Agent”只是一个aws-cli插件和一堆脚本。您可以在大多数系统上安装pip install awscli-cwlogs插件(假设您已经安装了awscli)。注意:我认为Amazon Linux不是“大多数系统”,可能需要不同的方法。

那么你将需要两个配置:awscli config,其中包含以下内容(如果需要,还可以添加凭据,并将your-east-1替换为您所在的地区):

[plugins]
cwlogs = cwlogs

[default]
region = us-east-1

logging config这样的东西(根据文档调整你的需求):

[general]
state_file = push-state
[logstream-cfn-init.log]
datetime_format = %Y-%m-%d %H:%M:%S,%f
file = /var/log/cfn-init.log
file_fingerprint_lines = 1-3
multi_line_start_pattern = {datetime_format}
log_group_name = ec2-logs
log_stream_name = {hostname}-{instance_id}/cfn-init.log
initial_position = start_of_file
encoding = utf_8
buffer_duration = 5000

之后,要自动启动守护程序,您可以创建一个这样的systemd单元(将配置路径更改为实际放置它们的位置):

[Unit]
Description=CloudWatch logging daemon

[Service]
ExecStart=/usr/local/bin/aws logs push --config-file /etc/aws/cwlogs
Environment=AWS_CONFIG_FILE=/etc/aws/config
Restart=always
Type=simple

[Install]
WantedBy=multi-user.target

在那之后你可以像往常一样systemctl enablesystemctl start。这假设您的实例运行的是使用systemd的分发(现在大多数都是这样,但如果不是,您应该查阅文档到您的发行版以了解如何运行守护进程)。

官方设置脚本还添加了logrotate的配置,我跳过了那部分,因为在我的情况下不需要它,但如果您的日志被轮换,您可能想要用它做一些事情。有关详细信息,请参阅安装脚本和logrotate文档(基本上,只需在旋转文件时重新启动守护程序)。

© www.soinside.com 2019 - 2024. All rights reserved.