问题标签 [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 - 如何让 journald 增加日志存储容量?
我想通过 journald 获得持久性日志。我建立/var/log/journal
并重新加载了服务。现在日志保存在磁盘上。但是日志大小限制很低。
我补充说/etc/systemd/journald.conf
。(Storage=persistent/auto
没关系,我都试过了)。
如您所见,我只将每个日志文件的大小更改为 1Gb,并告诉我希望磁盘上有 10Gb 的空闲空间。
但是journald
告诉我他只有4Gb的日志存储容量。
我错过了什么?
本手册也包含这样的节。
第一对默认为相应文件系统大小的 10%,第二对默认为 15%,但每个值的上限为 4G。
是不是说日志可以占用的最大空间是4Gb并且是硬编码的?
ubuntu-16.04 - 防止 syslog() 消息进入日志守护进程
我的应用程序使用 syslog() 根据 rsyslog.conf 中的规则生成进入特定日志文件的日志。
自从迁移到 Ubuntu 16.04 后,这些日志也开始出现在 journalctl 输出中,并且机器的系统 CPU 利用率有所增加。
有没有办法禁止这些系统日志消息进入日志守护进程?
谢谢!
linux-kernel - sd_journal_sendv 写入 BLOB 而不是字符串
请有人解释一下如何使用 sd_journal_sendv 系统调用?我尝试使用下面的代码片段,但输入字符串被 journald 解释为 BLOB。
我分别为 MESSAGE、MESSAGE_ID 和 PRIORITY 写了“Hello world!”、52fb62f99e2c4、5。但在日记中我可以看到它们被写成 BLOB。
docker - Docker 使用 journald 收集日志但无法删除旧日志文件
我journald
用来收集 docker 的文件。
Journald
配置:
所以我想删除大于100g的文件。事实上,journald
已经删除了那些文件。
但是我发现磁盘空间并没有减少,我使用lsof | grep delete
发现那些文件句柄被dockerd
进程占用了。
因为这是生产服务,所以无法重启docker。有什么办法可以解决这个问题吗?
docker - 如何将日志从 docker 容器转发到主机 journald/syslog 服务?
我想将所有日志从 docker postgresql 容器发送到我的主机日志服务。
即我希望能够使用 tail -f /var/logs/messages 或 journald -f 在主机上读取 docker 容器日志
这是我的 docker-compose 配置:
我一直在尝试不同的解决方案,但每次我从 docker 收到错误:
而且我看不到主机上的日志。
我不确定,我做错了什么?
先感谢您
docker - 查看 docker 容器中的实例 journalctl 日志
我希望能够运行 docker 容器并查看所有实例 journalctl 日志。换句话说,我想在 Instance 和 Docker 容器中看到相同的 journalctl 日志输出。
我试图安装 journald 套接字,但我仍然没有看到来自实例的日志日志
谢谢您的帮助。
buffer - 程序退出时如何保证systemd和journald之间的stdout缓冲区被刷新?
演示问题的简化示例是
(虽然它不是特定于编程语言的——我发现问题的原始应用程序是在 Go 中)。
如果它已编译并由以下单元运行:
然后 onsystemctl restart
journald
在大多数情况下不会得到foo\n
输出,而syslog
成功地将其写入/var/log/syslog
.
以下是journald
服务的输出示例:
然后是相应的部分/var/log/syslog
:
如果有的话,保证journald 收到的方法stdout
是什么?
containers - 使用 journald 获取所有容器日志
我正在使用 fluentbit 收集日志,它允许通过指定过滤器使用 journald 过滤 systemd 日志。例如 ---unit=docker.service
或--unit=systemd*
。
我想阅读所有容器日志。我尝试将单个容器的日志读取为 - CONTAINER_ID_FULL=<container_id>
。这行得通。但是使用像这样的正则表达式是CONTAINER_ID_FULL=*
行不通的。
我试图为所有容器提供通用服务,看看是否有帮助。我跑了systemctl list-unit-files
。我能够看到我的容器以(可能)系统单元名称运行,例如docker-<container_id>.scope
. 因此,我尝试将其用作带有 unit like 的服务名称,--unit=docker-<container-id>.scope
但这没有显示任何数据。
我跑了systemctl status docker-<container_id>.scope
(按照这里的建议)查看服务名称是否不同,但它没有显示任何相关信息。
我想要的是一种使用单个过滤器获取所有容器日志的方法。任何帮助表示赞赏。
python - Journalctl 分组记录消息?
所以在我们的机器上,我们发现了一些奇怪的东西。我们的服务正常记录,但这些消息似乎被分组到特定大小的包中。例如,我们服务的一个命令仅在日志中生成 1 行。另一个命令生成大约 5 行。
使用journalctl -u service -f,单行只有在足够多的情况下才会显示,而5行的消息总是在您调用命令时立即显示。考虑这个例子:
我调用了 4 次短命令,但 journalctl 中没有显示任何内容。然后我调用较长的命令,所有 4 个短命令条目以及新的较长命令立即显示出来。但是,它们都具有基本完全相同的时间戳(考虑到写入速度),即使我间隔几秒钟发送调用它们!
这对于调试来说很棘手,因为您不能真正依赖消息实际发生时出现的消息。我在这里想念什么?有什么方法可以强制这些日志消息在实际发生时出现在 journalctl 中?
asp.net - 如何为 Linux 上托管的 ASPNET 核心应用程序的错误过滤 journalctl 日志
我有一个使用 ASP.NET core 2.0.7 构建的网站,它托管在 Ubuntu 16.04 上。我已经这样做了
我使用 systemd 让它自动启动,并将日志发送到 journald。
我可以使用以下命令获取日志
但是,如果我只想有错误及以上,我应该可以使用-p,即
不过好像微软的日志格式和journalctl的-p过滤不兼容。我应该改变什么?