Tag: docker fluentd

stream利的JSONparsing器:获取无法parsing的消息

在我目前的项目中,我必须处理不同types的日志logging在一个来源(http)中进入我的fluentd。 大多数条目是JSON格式的,但在某些情况下,我必须处理明文logging。 (例如,在设置日志库之前的例外情况)。 我如何处理我的fluentd-config中的这种情况? 我的详细设置:我使用Docker的fluentd-logging-driver作为一些带有node.js-app的容器。 node.js-app有一个日志logging库,它以json格式将所有内容logging到stdout / stderr。 每个运行时exception也将被格式化为json。 我的问题只发生在node.js无法启动(如缺less依赖关系..)。 在这种情况下,exception将被格式化为纯文本。 这会导致fluentd中的错误,因为它不能被parsing。 Fluentd也运行在一个容器中。 我的第一个方法是将fluentd-own-messages(包括parsing器错误消息)也logging到我的elasticsearch中,但是原来的消息get的来源是这种方法丢失的。 我运行了大约15个不同的服务,所以我真的需要我的exception的“源”。 <source> @type forward port 24224 </source> <filter fluent.**> @type record_transformer <record> fields.module fluentd #fields.module is my identifier for the source </record> </filter> <match fluent.**> @include elastic.conf #elastic configuration is in a separate file </match> # JSON-Parse <filter **> @type parser […]

如何在使用fluentd进行docker日志时获取容器和图像名称?

我正在使用一个fluentd容器来挂载/ var / lib / docker / containers目录,并且拖曳每个容器的所有日志。 日志存储在/var/lib/docker/containers/$container_id/$container_id-json.log中。 这些不包含容器名称或图像名称。 我需要能够将容器和图像名称分别添加到来自日志文件的每个日志中。 容器名称和映像名称都存储在/var/lib/docker/container/$container_id/config.v2.json中。 我不知道如何从该文件中获取图像和名称,并将其作为logging添加到相应的日志中。 这只是我的第一个想法,可能有更好的方法来做到这一点,随时提供任何意见。 旁注:我故意不使用fluentd作为docker日志logging驱动程序,因为我们以前以类似的方式使用了logspout。 目前的目标是用类似的方式用fluentdreplacelogspout。 如果日志logging驱动程序确实以更简单的方式提供了这些信息,那么稍后我会考虑切换。

停止写入标准输出和stderror的Tomcat

我们使用docker。 我们使用fluentd作为我们的docker集装箱的日志驱动程序。 我们使用tomcat来为Java应用程序提供服务。 当在java应用程序中抛出exception时,我们使用log4j来处理这个exception。 为了控制日志logging,我已经根据https://tomcat.apache.org/tomcat-6.0-doc/logging.html中的说明在tomcat上安装了log4j。 这是我正在使用的configuration。 log4j.rootLogger = INFO, CATALINA # Define all the appenders log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina log4j.appender.CATALINA.Append = true log4j.appender.CATALINA.Encoding = UTF-8 # Roll-over the log once per day log4j.appender.CATALINA.DatePattern = '.'yyyy-MM-dd'.log' log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout log4j.appender.CATALINA.layout.ConversionPattern = stewart %d [%t] %-5p %c- %m%n log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost log4j.appender.LOCALHOST.Append […]

Fluent捕获来自Docker的堆栈跟踪

我试图让Fluentd使用in_tailparsing来自Docker日志logging驱动程序的Java堆栈跟踪,并将它们作为单个消息发出。 对于我的生活,不知道为什么它仍然分裂了他们。 这是一个示例input,正在写入一个文件: 2015-12-17T19:19:47+00:00 docker.java.ubuntu:15.10 {"log":"Exception in thread main java.lang.NullPointerException\r","container_id":"5a064eb23465350a11fe00b1f7787f5bd3e9f0182dd44c09516a72ab4006bd54","container_name":"/src-test_1.0.0.353_989549167.1","source":"stdout"} 2015-12-17T19:19:47+00:00 docker.java.ubuntu:15.10 {"container_id":"5a064eb23465350a11fe00b1f7787f5bd3e9f0182dd44c09516a72ab4006bd54","container_name":"/src-test_1.0.0.353_989549167.1","source":"stdout","log":" at com.example.myproject.Book.getTitle(Book.java:16)\r"} 2015-12-17T19:19:47+00:00 docker.java.ubuntu:15.10 {"container_name":"/src-test_1.0.0.353_989549167.1","source":"stdout","log":" at com.example.myproject.Author.getBookTitles(Author.java:25)\r","container_id":"5a064eb23465350a11fe00b1f7787f5bd3e9f0182dd44c09516a72ab4006bd54"} 2015-12-17T19:19:47+00:00 docker.java.ubuntu:15.10 {"container_id":"5a064eb23465350a11fe00b1f7787f5bd3e9f0182dd44c09516a72ab4006bd54","container_name":"/src-test_1.0.0.353_989549167.1","source":"stdout","log":" at com.example.myproject.Bootstrap.main(Bootstrap.java:14)\r"} 2015-12-17T19:19:47+00:00 docker.java.ubuntu:15.10 {"container_id":"5a064eb23465350a11fe00b1f7787f5bd3e9f0182dd44c09516a72ab4006bd54","container_name":"/src-test_1.0.0.353_989549167.1","source":"stdout","log":"test\r"} 这是我用于in_tail的configuration: <source> @type tail tag docker.multiline path /tmp/fluent/java* pos_file /tmp/fluent/log.pos refresh_interval 10 format multiline format first_line /.*\"log\":\"[^\s].*/ format /\"log\":\"(?<message>.+)\\r/ </source> 正则expression式对我来说是正确的,当我将它们插入正则expression式testing程序时,first_line正则expression式只匹配我样本的第一行和最后一行,而格式正则expression式匹配每一行,但只捕获堆栈跟踪信息,因为我是期待。 然而,它们都是作为单独的信息出现的,就像first_line匹配每一行,而不是第一个和最后一个。