问题标签 [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.
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 日志,我看到:
所以看起来正向输出正在使用多个线程。这是预期的吗?
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 使用此配置获取任何日志
kubernetes - 将 Fluentbit Docker Logs(Systemd) 解析为 Kubernetes 中的 GELF 消息输出时出现问题
我正在获取 Docker(Systemd) 日志并尝试以 GELF 格式将其发送到 Graylog 3 输出,但日志格式不正确,并且 Graylog 将其丢弃。
我关注这个参考:
- https://docs.fluentbit.io/manual/output/gelf
- https://docs.fluentbit.io/manual/input/systemd
- https://fluentbit.io/kubernetes/
请参阅下面的堆栈:
输入
- 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
expect - systemd 无法启动 VPN 服务
我有一个简单的期望脚本名称“vpnloginpractice.sh”来启动我的 VPN。该脚本位于“/etc/openvpn/”中,如果我手动运行它可以正常工作。我尝试使用 systemd 在启动时执行脚本,但它不会启动 VPN。下面是我的 VPN 脚本的代码和我在目录 /etc/systemd/system 中创建的服务。我做错了什么伙计们?
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_TAG和SYSLOG_IDENTIFIER
我的 Fluentd 配置是
我的主要问题是如何使用SYSLOG_IDENTIFIER过滤来自 fluentd 的日志,或者我在这里做错了什么?
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
有什么区别?
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 配置为使用持久存储。一切都在本地运行;现在我没有从远程机器收集日志。
ubuntu - Debian 服务器 Systemd-journald 使用高 CPU
systemd-journal 的 CPU 使用率似乎很高(60~70%)
并且 /var/log/debug ,syslog,bandwidth,kern.log 文件大小增加得非常快。
原因是什么?解决办法是什么?
systemd-journald - linux 命令从 systemd-journald 读取/监视事件
我想监控 systemd-journal 的事件和日志。没有找到任何我可以使用的命令。我正在寻找类似“tail -100f”的东西,它可以向我展示 systemd-journal 的解码事件
linux - sd_journal_print 未正确记录
编译:g++ sd-journal-test.cc -o sd-journal-test -lsystemd
显示:
sd_journal_print 给出了一个没有行和其他数字的日志,而 sd_journal_Send 从未记录过。
这是什么原因,我该如何解决?