问题标签 [systemd-journald]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
810 浏览

logging - FluentD 和 FluentBit 之间的乱序日志

我目前正在使用 JournalD + JournalBeat + Logstash 作为日志堆栈,但我想切换到使用 JournalD + FluentD。

我尝试使用https://github.com/fluent-plugin-systemd/fluent-plugin-systemd作为 FluentD 的输入,但它导致每秒约 1000 条日志行的低吞吐量,我需要至少支持 2000 条。

所以现在我正在尝试使用 JournalD + FluentBit + FluentD,在 FluentBit + FluentD 之间使用转发协议。使用此堆栈,我能够达到每秒 5000 条日志行的吞吐量,但会导致行乱序。实际上,乱序似乎是成块的。

这是我的 FluentBit 配置:

这是我的 FluentD 配置:

额外细节:

  • 我在 4gb 和 4096 CPU 共享的 docker 容器中运行 FluentD 和 FluentBit
  • 两种服务的 CPU 使用率测量值均低于 20%

我尝试过的其他事情:

  • 在 FluentBit 中设置Mem_Buf_Limit为 2MB 可修复无序,但吞吐量仅为每秒 350 行。如果我使用更大的缓冲区日志行再次出现故障。
  • 将 FluentBit 输出设置为文件会按顺序生成日志行,但我无法在不同文件中分发日志。
  • 在 FluentBit 中使用更大的Flush间隔会导致更大的块乱序
  • flush_thread_count在 FluentD 中尝试过,没有任何影响

我应该尝试的任何其他设置/协议的任何想法?还有其他方法可以集成 Journal 和 FluentD 吗?

- - - 编辑 - -

使用 DEBUG 查看 FluentBit 日志,我看到:

所以看起来正向输出正在使用多个线程。这是预期的吗?

0 投票
4 回答
3545 浏览

kubernetes - Fluentbit 在 Kubernetes 中获取 Docker Logs(Systemd) 无法正常工作

我正在尝试在 Kubernetes 中配置 Fluentbit 以从应用程序 POD/Docker 容器中获取日志,并使用 GELF 格式将此日志消息发送到 Graylog,但这不起作用。

请参阅下面的堆栈:

输入

  • Docker 版本 1.13.1
    • Docker 日志格式 => JSON
    • Docker 日志驱动程序 => Journald => systemd
  • Fluent-bit 1.3 在 Kubernetes 中作为 Daemonset 运行
  • Kubernetes 1.17
  • 操作系统主机:CentOS 7

输出

  • 消息输出格式:GELF 1.1
  • 集中式日志 => Graylog 3

问题是fluentbit没有从systemd读取日志我在两个输出(Systemd,Stdout)中都没有得到任何日志,STDOUT只是为了帮助进行故障排除。

我不知道为什么我无法从 systemd 读取。我完全按照文档 https://docs.fluentbit.io/manual/input/systemd

我的 K8S 配置:

流利的位configmap.yaml

流利的位ds.yaml

流利的位角色绑定.yaml

流利的位角色.yaml

fluent-bit-service-account.yaml

我的 Fluentbit OUTPUT(STDOUT) 仅用于调试:

问题是我没有从 systemd 使用此配置获取任何日志

0 投票
0 回答
1628 浏览

kubernetes - 将 Fluentbit Docker Logs(Systemd) 解析为 Kubernetes 中的 GELF 消息输出时出现问题

我正在获取 Docker(Systemd) 日志并尝试以 GELF 格式将其发送到 Graylog 3 输出,但日志格式不正确,并且 Graylog 将其丢弃。

我关注这个参考:

请参阅下面的堆栈:

输入

  • Docker 版本 1.13.1
    • Docker 日志格式 => JSON
    • Docker 日志驱动程序 => Journald => systemd
  • Fluent-bit 1.3 在 Kubernetes 中作为 Daemonset 运行
  • Kubernetes 1.17
  • 操作系统主机:CentOS 7

输出

  • 消息输出格式:GELF 1.1
  • 集中式日志 => Graylog 3

我的 Kubernetes 配置:

流利的位configmap.yaml

流利的位ds.yaml

流利的位角色绑定.yaml

流利的位角色.yaml

fluent-bit-service-account.yaml

我的 Fluentbit OUTPUT(STDOUT) 仅用于调试:

问题是如何将日志正确格式化为 GELF 格式以发送到 Graylog 3

0 投票
0 回答
32 浏览

expect - systemd 无法启动 VPN 服务

我有一个简单的期望脚本名称“vpnloginpractice.sh”来启动我的 VPN。该脚本位于“/etc/openvpn/”中,如果我手动运行它可以正常工作。我尝试使用 systemd 在启动时执行脚本,但它不会启动 VPN。下面是我的 VPN 脚本的代码和我在目录 /etc/systemd/system 中创建的服务。我做错了什么伙计们?

0 投票
1 回答
269 浏览

logging - 通过 SYSLOG_IDENTIFIER 获取 Docker 日志到 Fluentd

我有将所有日志写入 Journald 的 docker 容器。我已将这两个标志添加到 docker run 命令

--log-driver=journald --log-opt tag="docker.test"

当我使用journalctl CONTAINER_NAME=test-docker查看日志时,我清楚地看到了我在--log-opt tag="docker.{{.Name}}"中定义的标签

Mar 23 06:33:57 sethnpl025 "docker.test"[1534]: {"thread":"localhost-startStop-1","level":"INFO","loggerName":.......

我的主要目标是从 journald 中获取这些日志,并使用 Fluentd 将它们写入 Google Cloud 日志记录。但问题是,当我尝试使用Fluentd中的 SYSLOG_IDENTIFIER 过滤日志时,我什么也没得到。正如我在 docker 文档中阅读的(如果我阅读正确),设置--log-opt tag="xxxx"将设置CONTAINER_TAGSYSLOG_IDENTIFIER

我的 Fluentd 配置是

我的主要问题是如何使用SYSLOG_IDENTIFIER过滤来自 fluentd 的日志,或者我在这里做错了什么?

0 投票
1 回答
315 浏览

systemd - **journalctl -u test.service** 和 **journalctl CONTAINER_NAME=test** 之间的区别

我有一个 systemd 服务文件,它运行一个带有日志驱动程序日志的 docker 容器。

当我通过 journalctl 检查日志时,我看到两个不同的_TRANSPORT。使用journalctl -u test.service我看到_TRANSPORT=stdout。随着Journalctl CONTAINER_NAME=test我看到_TRANSPORT=journal

有什么区别?

0 投票
0 回答
72 浏览

api - 监控日志以进行进一步处理

我正在编写一个服务应用程序,它将从多个来源读取日志条目,将它们解析为更简单的格式并允许对其进行分析和统计。最重要的来源将被记录下来。

我知道像这样的命令journalctl -o json -f会给我我需要的所有数据。我可以将其作为子进程打开并从其标准输出流中读取。另一个--since "..."允许我从最后收到的条目赶上,例如在重新启动或服务重新启动之后。

但是这个性能怎么样。是否建议将journalctl命令用于此类后台和永久监控活动?它会消耗太多内存、磁盘 I/O 或运行时以使journalctl实例“永远”在后台运行吗?还是我应该在日志中找到更直接的 API?我还阅读了有关 systemd-journal-upload 的信息,但我不完全确定它是否可以在重新启动后赶上。它还通过具有自己的协议开销的 HTTP 发送所有数据,尽管我的服务将使用 ASP.NET Core 编写,因此它已经可以接受 HTTP 请求。

如果相关的话,我的目标是 Ubuntu Server 20.04 并从 .NET Core 3.1 调用。Journald 配置为使用持久存储。一切都在本地运行;现在我没有从远程机器收集日志。

0 投票
1 回答
183 浏览

ubuntu - Debian 服务器 Systemd-journald 使用高 CPU

systemd-journal 的 CPU 使用率似乎很高(60~70%)

并且 /var/log/debug ,syslog,bandwidth,kern.log 文件大小增加得非常快。

原因是什么?解决办法是什么?

0 投票
2 回答
228 浏览

systemd-journald - linux 命令从 systemd-journald 读取/监视事件

我想监控 systemd-journal 的事件和日志。没有找到任何我可以使用的命令。我正在寻找类似“tail -100f”的东西,它可以向我展示 systemd-journal 的解码事件

0 投票
1 回答
260 浏览

linux - sd_journal_print 未正确记录

编译:g++ sd-journal-test.cc -o sd-journal-test -lsystemd

显示:

sd_journal_print 给出了一个没有行和其他数字的日志,而 sd_journal_Send 从未记录过。

这是什么原因,我该如何解决?