跳到主要内容

配置容器日志

默认情况下,Solace PubSub+软件事件代理生成基于RFC 3164定义的格式的日志消息,并将它们定向到/var/lib/solace/jail/logs中的每个日志设施的日志文件。此外,您可以使用Solace CLI将每个日志设施定向到远程syslog接收器。使用PubSub+软件事件代理的容器包时,您还可以在创建容器时使用配置键将事件代理配置为将日志设施定向到stdout。如果您将日志设施定向到stdout,您可以修改输出格式,并使用容器运行时日志驱动程序将输出转发到其他位置,例如外部日志聚合器,以进行额外的存储、分析和报告。

有关事件代理日志记录的更多信息,包括默认syslog消息格式的详细描述,请参见配置监控。

选择日志设施

当您使用配置键格式化或定向日志输出时,必须在配置键名称中包含日志设施名称。这允许您独立控制每个设施的输出目的地和格式。

您可以为以下每个日志设施配置输出目的地和格式(如果指定了stdout作为目的地):

日志设施描述
debug用于内部调试的调试过程中执行的操作或遇到的错误。
command在Solace命令行界面(CLI)提示符下发出的命令、CLI脚本文件或SEMP遇到的动作或错误。
system事件代理进程遇到的与事件代理健康相关的事件或错误。system设施是event设施的子集。
event事件代理进程遇到的事件或错误,例如与发布者和订阅者相关的事件代理事件。
kernel用于内部调试的低级进程执行的操作或遇到的错误。

例如:

logging_command_output=stdout
logging_system_output=all

在这个例子中,command设施的输出被定向到stdoutsystem设施的输出被定向到本地主机上的文件和stdout

配置日志输出目的地

要配置软件事件代理日志设施的输出目的地,请在容器初始化期间包含logging/<log_facility>/output配置键,并指定以下值之一:

输出目的地描述
file默认输出目的地。将日志设施定向到本地主机上的适当日志文件/usr/sw/jail/logs
stdout将日志设施定向到stdout
all将日志设施定向到本地主机上的日志文件和stdout
none将日志设施既不定向到日志文件也不定向到stdout(相当于NULL)。
请注意,将日志设施输出目的地设置为none等同于禁用日志设施。
Solace不推荐此设置,因为为相应设施生成的日志实际上会丢失。

例如:

logging_debug_output=all
logging_command_output=all
logging_system_output=all
logging_event_output=all
logging_kernel_output=all

在这个例子中,所有日志设施的输出都被定向到本地主机上的日志文件和软件事件代理容器的stdout I/O流。

如果您将多个日志设施定向到stdout,所有设施将合并为一个单一流。要从输出中提取设施,请使用日志聚合器(Logstash、Fluentd)并根据您的兴趣过滤日志设施字段。

配置日志输出格式

要为容器配置日志设施输出格式,请在容器初始化期间包含logging/<log_facility>/format配置键,并指定以下值之一:

日志输出格式描述
graylog由Graylog、Logstash和Fluentd支持的JSON格式。
rfc5424由syslog和通过插件支持的日志聚合器如Logstash和Fluentd支持的Syslog格式。
raw不对日志设施应用格式化。
如果您选择此值,日志输出不包括时间戳信息。
legacy默认的syslog格式。这是当您指定file输出目的地时所有日志都以该格式写入的格式。

例如:

logging_debug_format=graylog
logging_command_format=graylog
logging_system_format=graylog
logging_event_format=graylog
logging_kernel_format=graylog

在这个例子中,日志设施输出被转换为Graylog日志聚合器如Logstash或Fluentd支持的JSON格式。

更改此值只影响发送到stdout的日志设施的格式。/usr/sw/jail/logs中的日志文件始终是legacy格式。

转发日志输出

如果您将软件事件代理容器日志的输出目的地配置为stdout,您可以使用日志驱动程序将合并的日志流转发以进行进一步的存储、报告和分析。

对于Docker或Podman,请在容器初始化期间包含--log-driver <string>创建选项,并指定支持的日志驱动程序,结合适当的--log-opt <value>选项,将日志流转发到您希望的目的地。

例如:

--log-driver syslog
--log-opt syslog-format=rfc5424micro
--log-opt syslog-address=tcp://192.168.1.1:12201

在这个例子中,所有定向到stdout的日志设施都被转发到位于192.168.1.1:12201的外部syslog服务器。

有关使用日志驱动程序和相应选项转发stdout I/O流的更多信息,以及支持哪些日志驱动程序,请参见:

  • Docker文档中的配置日志驱动程序
  • Podman运行文档中的--log-driver=driver条目