标签: fluentd

如何最大限度地利用 fluentd 服务器?

我有一个流利的服务器,平均处理 1000 个请求/秒。该服务器由 32 个 CPU 组成。在这个服务器上运行着 32 个具有相同配置的 fluentd docker 容器。服务器的入口点是一个 nginx 作为负载均衡器,配置了循环算法并将其发送到不同的容器。容器和 nginx 都监听 24224/tcp。

该节点的输入是 6 个使用fluent-logger-csharp发送到 fluentd 服务器的C# 应用程序。因此,对于每个应用程序打开一个到 Fluentd 服务器的连接,由于流量较大,应用程序保持打开套接字。这导致 32 个 docker 中只有 6 个正在处理请求。

如何在不修改 C# 客户端的情况下更好地利用服务器利用率?

nginx logging load-balancing fluentd docker

5
推荐指数
1
解决办法
474
查看次数

在 fluentd 中使用多行 json

我是流利的新手。

我有在 Docker 容器中运行的应用程序。它们是以 JSON 格式登录的 Java 应用程序。JSON 消息通常分为多行。

我想使用 Docker fluentd 日志驱动程序将这些消息发送到中央 fluentd 服务器。

Docker 驱动程序将每一行分别发送到 fluentd,因此我需要能够组合这些多行消息。

我正在寻找有关如何实现这一目标的一些指示。

使用开箱即用的 fluentd config 我的日志如下所示:

20170501T050820+0000    docker.fa5077070a33     {"log":"{\"timestamp\":\"2017-05-01T05:08:20.168Z\", \"applicationName\":\"my-event-publisher\", \"applicationVersion\":\"0.0.6-SNAPSHOT\",","container_id":"fa5077070a330f6a3a6f9400cc0ed04f2cf61c5eb2d66c5693385b67f3b09e2e","container_name":"/ecs-td-dev-my-event-publisher-12-my-event-publisher-dcb1b5f5a383d3852d00","source":"stdout"}
20170501T050820+0000    docker.fa5077070a33     {"container_name":"/ecs-td-dev-my-event-publisher-12-my-event-publisher-dcb1b5f5a383d3852d00","source":"stdout","log":"  \"logLevel\":\"INFO\", \"pid\":\"1\", \"threadId\":\"Thread-4\", \"host\":\"fa5077070a33\",","container_id":"fa5077070a330f6a3a6f9400cc0ed04f2cf61c5eb2d66c5693385b67f3b09e2e"}
20170501T050820+0000    docker.fa5077070a33     {"source":"stdout","log":"  \"logger\":\"org.springframework.context.support.DefaultLifecycleProcessor\",","container_id":"fa5077070a330f6a3a6f9400cc0ed04f2cf61c5eb2d66c5693385b67f3b09e2e","container_name":"/ecs-td-dev-my-event-publisher-12-my-event-publisher-dcb1b5f5a383d3852d00"}
20170501T050820+0000    docker.fa5077070a33     {"container_id":"fa5077070a330f6a3a6f9400cc0ed04f2cf61c5eb2d66c5693385b67f3b09e2e","container_name":"/ecs-td-dev-my-event-publisher-12-my-event-publisher-dcb1b5f5a383d3852d00","source":"stdout","log":"  \"message\":\"Stopping beans in phase 2147483647\""}
20170501T050820+0000    docker.fa5077070a33     {"source":"stdout","log":"}","container_id":"fa5077070a330f6a3a6f9400cc0ed04f2cf61c5eb2d66c5693385b67f3b09e2e","container_name":"/ecs-td-dev-my-event-publisher-12-my-event-publisher-dcb1b5f5a383d3852d00"}
Run Code Online (Sandbox Code Playgroud)

我应该按照什么顺序处理这个问题?

我需要:

  1. 提取每一行的“日志”部分
  2. 查找正则表达式 /^{"timestamp/ 以确定消息的开始
  3. 将每个日志语句合并为一个
  4. 将日志字符串解析为实际的 JSON

老实说,我并不真正关心 fluentd 的格式 - 添加时间戳和泊坞窗..

我宁愿只有一个包含我的 JSON 消息的文件,而 fluentd 没有添加其他字段。

我已经看过有关使用“解析器”的文档,但正如我所说,我只是不太确定顺序,因为我正在尝试将多行 JSON 结合在一起。

logging fluentd docker

5
推荐指数
0
解决办法
1621
查看次数

标签 统计

docker ×2

fluentd ×2

logging ×2

load-balancing ×1

nginx ×1