systemd的统一日志记录系统journalctl,助力问题定位

systemd程序是进程ID为1的进程,负责以所需的方式初始化系统。systemd由内核直接启动,信号 9(该信号通常会终止进程)对它不起作用。systemd统一管理所有 Unit 的启动日志,好处是仅用journalctl一个命令,查看所有日志(内核日志和应用日志)。

systemd-journald.service从内核、用户进程、标准输入和系统服务错误收到的日志记录信息,维护结构化的索引日记,并以此方式来收集和储存日志记录数据。systemd-journald服务默认处于启用状态。

显示特定进程 ID 生成的讯息:

# journalctl _PID=1039

显示属于特定用户 ID 的讯息:

# journalctl _UID=1000

仅显示指定服务生成的讯息:

# journalctl _SYSTEMD_UNIT=avahi-daemon.service

如果指定了两个不同的字段,则仅显示同时与两个表达式匹配的项

# journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=1488

如果两个匹配条件引用了相同的字段,则显示与两个表达式中任意一个匹配的所有项

# journalctl _SYSTEMD_UNIT=avahi-daemon.service _SYSTEMD_UNIT=dbus.service

可以使用“+”分隔符将两个表达式组合成一个逻辑“OR”。以下示例将显示来自进程 ID 为 1480 的 Avahi 服务进程的所有讯息,以及来自 D-Bus 服务的所有讯息:

# journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=1480 + _SYSTEMD_UNIT=dbus.service

日记设为永久

默认情况下,日记在 /run/log/journal/ 中储存日志数据。由于 /run/ 目录具有易失本性,因此,在重引导时会丢失日志数据。要永久保存日志数据,/var/log/journal/ 目录必须存在且具有正确的所有权和权限,如此,systemd-journald 服务便可在其中储存其数据。

以 root 身份编辑journald.conf。

# vi /etc/systemd/journald.conf

将包含Storage= 的行取消注释,并更改为

[...]

[Journal]

Storage=persistent

#Compress=yes

[...]

保存该文件,然后重启 systemd-journald:

systemctl restart systemd-journald

如果将日记日志数据保存到永久位置,这些数据最多占用/var/log/journal 所在文件系统空间的10%。如果 /var/log/journal 位于一个 30 GB /var 的分区中,则日记最多会占用 3 GB 磁盘空间。要更改此限制,请更改(并取消注释)SystemMaxUse 选项:

SystemMaxUse=50M

调用systemd错误

举例:如何找出并修复在 apache2 启动期间 systemd 报告的错误。

尝试启动 apache2 服务:

# systemctl start apache2

Job for apache2.service failed. See 'systemctl status apache2' and 'journalctl -xn' for details.

我们来看看该服务的状态如何:

# systemctl status apache2

apache2.service - The Apache Webserver

  Loaded: loaded (/usr/lib/systemd/system/apache2.service; disabled)

  Active: failed (Result: exit-code) since Tue 2014-06-03 11:08:13 CEST; 7min ago

  Process: 11026 ExecStop=/usr/sbin/start_apache2 -D SYSTEMD -DFOREGROUND \

          -k graceful-stop (code=exited, status=1/FAILURE)

导致错误的进程 ID 为 11026。

显示与进程 ID 11026 相关的详细讯息:

# journalctl -o verbose _PID=11026

[...]

MESSAGE=AH00526: Syntax error on line 6 of /etc/apache2/default-server.conf:

[...]

MESSAGE=Invalid command 'DocumenttRoot', perhaps misspelled or defined by a module

[...]

修复 /etc/apache2/default-server.conf 中的拼写错误,启动 apache2 服务,然后列显其状态:

# systemctl start apache2 && systemctl status apache2

apache2.service - The Apache Webserver

  Loaded: loaded (/usr/lib/systemd/system/apache2.service; disabled)

  Active: active (running) since Tue 2014-06-03 11:26:24 CEST; 4ms ago

  Process: 11026 ExecStop=/usr/sbin/start_apache2 -D SYSTEMD -DFOREGROUND

          -k graceful-stop (code=exited, status=1/FAILURE)

Main PID: 11263 (httpd2-prefork)

  Status: "Processing requests..."

  CGroup: /system.slice/apache2.service

          ├─11263 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D [...]

          ├─11280 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D [...]

          ├─11281 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D [...]

          ├─11282 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D [...]

          ├─11283 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D [...]

          └─11285 /usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -D [...]

参考

journalctl:查询systemd日记

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 背景 systemd即为system daemon,是linux下的一种init软件,由Lennart Poett...
    JameShen_Wen阅读 440评论 0 0
  • 原文链接如果有效,请点击原文链接查看。 原文:http://www.ruanyifeng.com/blog/201...
    f95da03ef3b2阅读 280评论 0 0
  • 转载于:http://www.ruanyifeng.com/blog/2016/03/systemd-tutori...
    A孑木阅读 195评论 0 0
  • 日志介绍rsyslog日志管理journalctlMySQL管理日志 一、日志介绍 (一)日志的基本概念 日志:将...
    哈喽别样阅读 484评论 0 0
  • 日志介绍 日志 记录历史事件:时间,地点,人物,事件 日志级别:事件的关键性程度,Loglevel 系统日志服务 ...
    Ben0606阅读 1,730评论 0 2