- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试使用 fluentd 为 docker 环境创建一个集中式日志记录系统。目前,我可以使用 fluentd docker logging 驱动程序将 docker 日志发送到 fluentd,与使用 in_tail 方法读取 docker 日志文件相比,这是一种更简洁的解决方案。但是,我目前正面临多行日志问题。
从上图中可以看出,多行日志是乱序的,这对用户来说非常困惑。有什么办法可以解决这个问题吗?
谢谢。
连续
最佳答案
使用 fluent-plugin-concat 插件帮助我解决了上述问题。
在fluent-conf中添加这些行
<filter **>
@type concat
key log
stream_identity_key container_id
multiline_start_regexp /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}
multiline_end_regexp /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}
</filter>
我的正则表达式正在检查日志中的 DateTimeStamp,其中每行以日期和时间戳开头(注意下面的 "log":"2017-09-21 15:03:27.289
)
2017-09-21T15:03:27Z tag {"container_id":"11b0d89723b9c812be65233adbc51a71507bee04e494134258b7af13f089087f","container_name":"/bel_osc.1.bc1k2z6lke1d7djeq5s28xjyl","source":"stdout","log":"2017-09-21 15:03:27.289 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.6"}
2017-09-21T15:03:28Z tag {"container_id":"11b0d89723b9c812be65233adbc51a71507bee04e494134258b7af13f089087f","container_name":"/bel_osc.1.bc1k2z6lke1d7djeq5s28xjyl","source":"stdout","log":"2017-09-21 15:03:28.191 INFO 1 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext"}
另外,我必须在 Dockerfile 中添加以下行来安装插件
RUN ["gem", "install", "fluent-plugin-concat", "--version", "2.1.0"]
#Works with Fluentd v0.14-debian
虽然这个正则表达式在异常发生的时候效果不好,但还是比以前好很多。 Fluentd Link, for reference .
关于logging - 用于多行的 Docker Fluentd 日志记录驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32686502/
我正在寻找一种将 source_hostname 发送到 fluentd 目标服务器的方法。 我在 logstash 上,但我们有代理/服务器端,我们有变量来获取 logstash 服务器配置文件中的
我有一个包含 json 记录的文件,并且想在将它们发送到 fluentd 输出之前从 json 记录中删除一些键。我可以使用“record_transformer Filter Plugin”来删除键
我需要将我的应用程序日志发送到作为 EFK 服务一部分的 FluentD。所以我尝试配置另一个 FluentD 来执行此操作。 my-fluent.conf: @type kafka_group
环境:-适用于 Windows 的 Fluentd-td-agent 发行版。Elasticsearch-v6.1.2应用插件-Nodejs Fluent-logger 我正在尝试使用 Fluentd
用例:设置要发送到目标服务的最大消息数(在一个时间范围内)。 例子。我们从具有以下类型日志的服务 X 收集日志: {"@timestamp":"2020-10-30T13:00:00.310Z","l
我写 @type tail format nginx path /home/work/opt/nginx/var/log/access.log tag nginx.access 在
Guyz……我们被困住了……救救我们! :-) 我们有一个使用 Fluentd 的 3 步日志聚合管道。 [#1 - 尾部日志(原始日志)] --(TCP)--> [#2 - 将读取的日志解析为 JS
我有来源: @type tail tag service path /tmp/l.log format json read_from_head true 我
我想排除 serive_name 为空的行 "service_name":"" . 这是我流利的 conf ## match tag=debug.** and dump to console
我设置了在 Docker 引擎上运行的 Fluentd 和 Elasticsearch。我有大量服务想要登录到 Fluentd。 我想要做的是为我运行的每个服务创建一个标签,并使用该标签作为 Elas
我正在使用的当前设置是具有多个容器的 Docker 组合堆栈。这些容器将它们的日志信息发送到运行 Fluentd 守护进程的日志容器(在 compose 堆栈内)。 Fluentd 的配置包含一个 i
这是我的 FluentD 解析器配置:
用例是这样的:我有几个运行的 java 应用程序都必须与不同的(每个都有特定的目标)elasticsearch 索引交互。例如应用程序 A 使用 ElasticSearch 的索引 A、B、C 进行查
我正在尝试使用 cat_sweep 插件在 fluentd 中处理扩展名为 .gz 的日志文件,但我的尝试失败了。如下面的配置所示,我正在尝试处理 /opt/logfiles/* 位置下的所有文件。但
我的系统时间是:Tue Jan 6 09:44:49 CST 2015 td-agent.conf : type webhdfs host Page on test.com port 5
我刚刚开始使用 fluentd,但我希望能够设置单个输出匹配规则,如下所示: type file path logs/ time_slice_format %Y%m%dT%H
我正在从在 Docker Swarm 集群上运行我的容器迁移到在 Google Container Engine 上运行的 Kubernetes。在 Docker Swarm 上运行时,我配置了 Do
我正在尝试使用 Bindplane 将 Java 开发人员创建的“系统日志”上传到 Google 的 Stackdriver。 Bindplane 是基于 fluentd 构建的。 我使用的是源类型的
我在 k8s 中有一个相当简单的 Apache 部署,使用 fluent-bit v1.5 作为日志转发器。我的设置与下面的 repo 中的设置几乎相同。我正在运行 AWS EKS 并将日志输出到 A
编辑:我已根据efrat-levitan's的建议在评论中添加了新信息。当我按照原始注释的建议将Elasticsearch版本升级到7.6.0时,列出的日志输出略有不同。为了帮助调试,我也没有立即启动
我是一名优秀的程序员,十分优秀!