Cloudwatch 代理错误:'loggers' 部分中没有选项 'file'

Cloudwatch Agent errors with: No option 'file' in section: 'loggers'

我正在尝试调整 Cloudwatch Logs Agent 中各种记录器的日志级别,根据 official AWS reference docs,它指出我应该能够将以下内容添加到 /var/awslogs/etc/awslogs .conf,为了实现这一点:

[loggers]
keys=root,cwlogs,reader,publisher

[handlers]
keys=consoleHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=INFO
handlers=consoleHandler

[logger_cwlogs]
level=INFO
handlers=consoleHandler
qualname=cwlogs.push
propagate=0

[logger_reader]
level=WARNING
handlers=consoleHandler
qualname=cwlogs.push.reader
propagate=0

[logger_publisher]
level=WARNING
handlers=consoleHandler
qualname=cwlogs.push.publisher
propagate=0

[handler_consoleHandler]
class=logging.StreamHandler
level=INFO
formatter=simpleFormatter
args=(sys.stderr,)

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(process)d - %(threadName)s - %(message)s

当我添加它时,日志转发停止,我在 /var/log/awslogs.log 中看到相关条目:

No option 'file' in section: 'loggers'

删除整个部分会恢复日志记录,但是 - 显然 - 没有调整任何日志级别。

知道我做错了什么吗?

不要将这些选项添加到 awslogs.conf。将它们添加到一个单独的文件中,然后通过 awslogs.conf:

中的 logging_config_file 键指定

/etc/awslogs/awslogs.conf

[general]
state_file = /var/lib/awslogs/agent-state
logging_config_file = /etc/awslogs/logging.conf
use_gzip_http_content_encoding = false
...

/etc/awslogs/logging.conf

[loggers]
keys=root,cwlogs,reader,publisher
file=/tmp/test

[handlers]
keys=consoleHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=INFO
handlers=consoleHandler

[logger_cwlogs]
level=INFO
handlers=consoleHandler
qualname=cwlogs.push
propagate=0

[logger_reader]
level=WARNING
handlers=consoleHandler
qualname=cwlogs.push.reader
propagate=0

[logger_publisher]
level=WARNING
handlers=consoleHandler
qualname=cwlogs.push.publisher
propagate=0

[handler_consoleHandler]
class=logging.StreamHandler
level=INFO
formatter=simpleFormatter
args=(sys.stderr,)

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(process)d - %(threadName)s - %(message)s

我们遇到了同样的问题。在我们的案例中,问题的根源在于我们将 logging.conf 文件放入 /etc/awslogs/config,但您必须将其放入 /etc/awslogs

您在记录器部分使用文件的解决方案对我们不起作用,我们收到了新错误

"No option 'log_group_name' in section: 'loggers'"

我们的主要 awslogs 文件看起来像

$ cat /etc/awslogs/awslogs.conf 
[general]
state_file = /var/lib/awslogs/agent-state
logging_config_file = /etc/awslogs/logging.conf
use_gzip_http_content_encoding = true

logging.conf 看起来像

$ cat /etc/awslogs/logging.conf 
[loggers]
keys=root,cwlogs,reader,publisher

[handlers]
keys=consoleHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=INFO
handlers=consoleHandler

[logger_cwlogs]
level=INFO
handlers=consoleHandler
qualname=cwlogs.push
propagate=0

[logger_reader]
level=ERROR
handlers=consoleHandler
qualname=cwlogs.push.reader
propagate=0

[logger_publisher]
level=ERROR
handlers=consoleHandler
qualname=cwlogs.push.publisher
propagate=0

[handler_consoleHandler]
class=logging.StreamHandler
level=INFO
formatter=simpleFormatter
args=(sys.stderr,)

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(process)d - %(threadName)s - %(message)s

目前我们使用

$ rpm -qa | grep awslogs
awslogs-1.1.2-1.10.amzn1.noarch