当前位置: 首页 > 知识库问答 >
问题:

Docker rsyslog驱动程序在实际消息之前添加消息长度

宇文卓
2023-03-14

我正在尝试配置一个rsyslog服务器来接收来自docker容器的日志。我目前正在使用以下突击队来运行docker容器:

sudo docker run -d --log-driver=syslog --log-opt syslog-address=udp://localhost:514 --log-opt syslog-format=rfc5424 --log-opt tag="remote:shouldshow" alpine echo "some random message"

我使用rfc5424,因为从docker到rsyslog的标准日志格式在冒号字符处中断消息,拆分标记remote:shouldshow并将shouldshow添加到消息中。有关此情况的更多信息,请参见:https://github.com/docker/docker/issues/18712

问题是,来自docker的日志消息在消息前面有一个额外的三位数,就像下面示例中的127一样(来自rsyslog的rawmsg属性):

127 <30>1 2016-07-12T00:51:13-03:00 vitor-Lenovo-G50-70 docker/remote:shouldshow 2910 docker/remote:shouldshow some random message

当我尝试使用诸如APP-NAME或syslogtag之类的syslog属性时,它们的值都为<30>1。

echo '<30>1 2016-07-12T00:15:53-03:00 vitor-Lenovo-G50-70 docker/remote:shouldshow 2910 docker/remote:shouldshow some random message' | nc -u -v localhost 514

共有1个答案

魏硕
2023-03-14

经过一番挣扎,我终于想通了。事实证明,如果将Docker日志驱动程序配置为使用RFC5424 syslog格式,Docker将使用一个使用RFC5425标准发送syslog消息的库,该标准定义了通过TLS发送syslog消息的标准方式。https://www.rfc-editor.org/RFC/RFC5425

因此,如果将Docker日志驱动程序配置为使用TLS,并将rsyslog服务器配置为接收加密消息,rsyslog将正确解析消息。

 类似资料:
  • 给定下面的消息驱动Bean,是否可以从CDI规范中定义一个全局修饰器来添加附加行为? 装饰器看起来是这样的: 当前未执行装饰程序。我已经将一个beans.xml文件添加到我的模块中。

  • pdo在mysql上运行良好,但在pgsql上,它的给出错误是“PDOException”,消息是“找不到驱动程序”我已经安装了包,其中还包括 http://packages.debian.org/sid/php5-pgsql 这个包提供了一个直接从PHP脚本连接PostgreSQL数据库的模块。它还包括与PHP数据对象扩展一起使用的pdo_pgsql模块。 我的dsn是我正在使用Ubuntu 1

  • 我有一个基本的SQS队列,它使用redrive策略触发Lambda,在5次重试后将失败的消息发送到DLQ。我读到Lambda应该在消息中添加关于错误的消息属性 除了在DLQ中查看消息时,我没有看到任何来自Lambda的ErrorCode、ErrorMessage属性外,其他一切都正常工作。有人用这个吗?

  • 是否可以在MDB(消息驱动Bean)中为“目的地”动态分配运行时值? 我还尝试了ejb-jar.xml方法,但是“activation-config-property-name”=“destination”的值被理解为队列的文字物理名称。因此我无法对资源进行JNDI查找。 从属性读取和分配目标或使用-d参数传递值的正确方法是什么?

  • 在企业应用程序中,我试图使用netBeans 8.1将MessageDriven beans注入Web应用程序(到REST服务)。我在IDE中没有得到任何警告,但是,在部署时,我得到以下错误: 严重:加载应用程序时出现异常:CDI部署失败:Weld-001408:未满足类型StatisticsBean的依赖关系,其限定符@Default在注入点[BackedAnnotatedField]@Inje

  • 同事, 你能帮我解决以下问题吗? 我有JavaEE应用程序。它包含一些具有业务逻辑的消息驱动Bean和一些负责整个应用程序配置的不同方面的管理Bean。我想设置bean启动和初始化的顺序。这意味着在管理Bean完成应用程序的初始化之前,容器不应该调用消息驱动Bean。应用程序的初始化包括读取和解析一些配置文件,这需要一些时间。 有WebSphere配置选项吗? 或者它应该只以编程方式完成技巧?