我正在使用 Debian 10。在我看来,两者journald
和都(r)syslogd
独立于来源(例如kmesg()
或syslog()
.
两者都运行有什么好处吗?为什么 Debian 两者都附带?为了舒适?我猜 syslog 文件可以是cat
'd,在哪里journald
强迫你使用journalctl
?
我不想远程发送我的日志,并且我启用了 journald 的持久性。
已经确定journald
日志是巨大的。在这个特定系统上,日志每周增长约 3GB。出于审计目的,我希望将系统日志保存的时间比我可以舒适地存储在该系统上的时间更长;这只是“以防万一”的存储,不必快速检索。以节省空间的方式归档这些日志的最佳方式是什么?
我正在考虑定期做一些事情journalctl | xz >>/var/log/old-logs.txt.xz
,但这在 CPU 使用方面会非常浪费,一次又一次地重新归档数据的相同部分,如果它们被 journalctl 删除,可能会丢失日志,所以也许有更好的方法?
如何journald
在日志消息中使用元数据为日志条目添加前缀?
我想我可能必须查看其中一个详细输出,过滤掉换行符和所有额外信息,只找到我正在寻找的项目(日期时间、Docker CONTAINER_NAME、消息),然后将其余的全部忽略到一行。
可以使用类似的东西awk
来去除换行符,只抓取 X、Y、Z 行,并将它们显示在一行上吗?那么 args 如何知道对每条 X、Y、Z 行进行分组?我的意思是,args 如何知道每个“分组”?
更多信息如下。
这是我正在记录到日志的两个不同 docker 容器中的两行:
Apr 28 18:09:43 rschool dockerd[1366]: [pid: 9|app: 0|req: 1/1] 68.180.230.53 () {48 vars in 934 bytes} [Fri Apr 28 14:09:42 2017] GET /enrollment/info-sessions/ => generated 17175 bytes in 1072 msecs (HTTP/1.0 200) 3 headers in 112 bytes (1 switches on core 0)
Apr 28 18:09:43 rschool dockerd[1366]: 68.180.230.53 - - [28/Apr/2017:18:09:43 +0000] "GET /enrollment/info-sessions/ HTTP/1.1" 200 3495 "-" "Mozilla/5.0 (Macintosh; IntelMac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36" "-"
如您所见,您无法分辨哪个日志条目属于哪个 docker 容器。
有元数据可用于查看完整的日志消息。这是其中一条消息,当查看时journald -o verbose
:
_UID=0
_GID=0
_SYSTEMD_SLICE=system.slice
_BOOT_ID=f4a6e9569f0349d1817bd92ab779ebe3
_MACHINE_ID=a62f158e48fc45eeb32afaef98d24d5b
_HOSTNAME=rschool
_TRANSPORT=journal
_CAP_EFFECTIVE=3fffffffff
_PID=1366
_COMM=dockerd
_EXE=/usr/bin/dockerd
_CMDLINE=/usr/bin/dockerd -H fd://
_SYSTEMD_CGROUP=/system.slice/docker.service
_SYSTEMD_UNIT=docker.service
CONTAINER_NAME=rschool_web_1
CONTAINER_ID=732e5bf0d0a1
CONTAINER_ID_FULL=732e5bf0d0a1cc110cacce68850143aa3534
CONTAINER_TAG=rschool_web/rschool_web_1/732e5bf0d0a1
MESSAGE=[pid: 9|app: 0|req: 1/1] 68.180.230.53 () {48 vars in 934 bytes} [Fri Apr 28 14:09:42 2017] GET /enrollment/info-sessions/ => generated 17175 bytes in 1072 msecs (HTTP/1.0 200) 3 headers in 112 bytes (1 switches on core 0)
_SOURCE_REALTIME_TIMESTAMP=1493402983899475
Fri 2017-04-28 18:09:43.901030 UTC [s=9d2777df7c3e4658a6d3d2c7896376ce;i=13ca;b=f4a6e9569f0349d1817bd92ab779ebe3;m=c91fe4d38;t=54e3dfa5ca862;x=f8ee400046f7d86f]
PRIORITY=6
但是 journald 似乎与-o verbose
.
使用 journald 的 Docker 日志驱动程序的一部分,它添加了诸如CONTAINER_NAME
- 这正是我正在寻找的东西。
如何使用类似于的格式显示 CONTAINER_NAME -o short
?
我有一个运行 CentOS 7 的系统,有超过 1T 的可用磁盘空间。systemd 版本是 219。我已经使用以下设置配置了 journald:
Storage=persistent
SplitMode=none
SystemMaxUse=50G
SystemMaxFileSize=1G
#MaxFileSec=1month (default)
但是,生成的日志文件小于 1G,它们被切割为大约 500M,如此屏幕截图所示。
我正在对系统进行激烈的测试,日志每天填充超过 1G,所以不是 MaxFileSec 正在启动。我注意到文件的组 id 不同,也许这是一个线索。但是,从屏幕截图中的时间戳可以看出,顶部的两个日志文件似乎不再被填充。
我的问题是,为什么日志文件的大小没有达到配置的1G?
编辑:更正了下面标记所指出的参数名称,但它在系统上是正确的。
意外删除我/var/log/journal
的后,我无法从后果中恢复过来。systemd-journald
每次我尝试启动它时都会一遍又一遍地失败。当我运行时:
$ journalctl --verify
PASS: /run/log/journal/system.journal
这并没有让我更接近解决它,因为它/run/log/journal/system.journal
是在我/usr/lib/systemd/systemd-journald
直接运行时创建的,它会自行输出
$ /usr/lib/systemd/systemd-journald
Failed to open runtime journal: Invalid argument
我已经尝试过的事情:
/var/log/journal and
/run/log/journal`。/var/log/journal
到两条路径,运行journalctl --verify
以检查它们,然后再次使用--file
标志。/etc/systemd/journald.conf
为Storage=volatile
仅禁用/var/log/journald
.我在 Ubuntu 15.10 上使用 apt-get 安装了 citadel-suite。然后我使用 'sudo apt-get remove citadel-suite; 卸载了它。sudo apt-get purge citadel-suite',手动删除目录'/etc/citadel/',然后使用apt-get重新安装。我以为它会重新运行简单的安装,但可惜没有。在阅读了 Citadel 的常见问题解答和文档后,我运行了 Citadel 的“设置”可执行文件。现在它完全无聊了。它以最快的速度吐出如下消息:
来自 systemd-journald@hostname 的广播消息(星期四 2016-07-14 21:09:52 PDT):citserver[12510]:未能创建目录 /etc/citadel/messages/:没有这样的文件或目录来自 systemd- 的广播消息journald@hostname(周四 2016-07-14 21:09:52 PDT):citserver[12510]:无法访问和创建目录来自 systemd-journald@hostname 的广播消息(周四 2016-07-14 21:09:52 PDT ): citserver[12511]: 配置设置 c_default_cal_zone 为空,但不能 - 检查您的配置!来自 systemd-journald@hostname 的广播消息(周四 2016-07-14 21:09:52 PDT):citserver[12511]:未能创建目录 /etc/citadel/messages/:没有这样的文件或目录来自 systemd- 的广播消息journald@hostname(星期四 2016-07-14 21:09:52 PDT):citserver [12511]:访问和创建目录失败
然后我重新启动了服务器,但它仍然从 systemd-journald 吐出相同的消息。有人对如何修复它并重新安装 Citadel 有任何想法吗?
我在 centos7 上使用systemd-journal-remote
(本地站点)和systemd-journal-upload
(远程站点)在两台机器上使用 systemd-219 使用日志转发。
本地日志存储在,/var/log/journal/<machine_id>/*.journal
而远程上传存储在/var/log/journal/remote/remote-*.journal
.
我可以使用journalctl -lf
or单独查看两者journalctl -D /var/log/journal/remote -lf
。
我现在正在尝试使用 获得组合视图journalctl -m
,其中手册页说它将显示来自所有可用期刊的条目,包括远程期刊,但这似乎不起作用,至少不是我期望的方式,因为期刊不会以任何方式合并。
UsingSYSTEMD_LOG_LEVEL=debug journalctl -lfm
给出了关于包含的日志文件的提示:
Root directory /var/log/journal added.
Considering /var/log/journal/fb643c7c40aa414aab4fe052ee7aff57.
Directory /var/log/journal/fb643c7c40aa414aab4fe052ee7aff57 added.
File /var/log/journal/fb643c7c40aa414aab4fe052ee7aff57/system.journal added.
File /var/log/journal/fb643c7c40aa414aab4fe052ee7aff57/user-1001.journal added.
File /var/log/journal/fb643c7c40aa414aab4fe052ee7aff57/user-1000.journal added.
Journal filter: none
Considering /var/log/journal/fb643c7c40aa414aab4fe052ee7aff57.
... journal output ...
有没有办法实现所有期刊的合并视图,我的意思是所有期刊文件位于某处/var/log/journal/
?
如何配置 systemd journal-remote 以侦听特定端口?
我能找到的只是命令行示例。根据手册页,journal-remote.conf 中似乎没有任何选项。
journald 文档说,将用户添加到“systemd-journal”组或“adm”组允许用户访问系统范围的日志。
我正在运行最新的 CentOS 7,我似乎在以非 root 用户身份访问日志时遇到问题。
这是我的配置:
$ id
uid=1000(centos) gid=1000(centos) groups=1000(centos),4(adm),10(wheel),190(systemd-journal) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$ cat /etc/systemd/journald.conf
[Journal]
Storage=persistent
$ journalctl
-- Logs begin at Sat 2015-08-29 16:35:52 UTC, end at Sat 2015-08-29 17:28:47 UTC. --
Aug 29 16:35:52 hostname ... <log continues>
journalctl 输出中没有系统日志。这是我的权限配置:
$ ll -a /var/log/journal/f9afeb75a5a382dce8269887a67fbf58/
total 24592
drwxr-xr-x. 2 root root 4096 Aug 29 16:35 .
drwxr-xr-x. 3 root root 4096 Aug 29 17:28 ..
-rw-r-----. 1 root root 16777216 Aug 29 17:27 system.journal
-rw-r-----+ 1 root root 8388608 Aug 29 17:33 user-1000.journal
如果我将所有权组更改system.journal
为systemd-journal
一切正常。但是,这似乎不对,因为文档没有说明任何内容。
有什么我遗漏的,还是实际上需要手动更改system.journal
文件组?
谢谢