journalctl でサービスの起動ログを抽出する

journalctl でサービスの起動ログを抽出する

systemd で管理しているサービスが いつ立ち上がったのか を確認したい場面は多いです。 ここでは journalctl を使って、特定サービスの起動ログを抽出する方法をまとめます。

journalctl とは?

journalctlsystemd のログ管理ツールです。 Linux システムで稼働しているサービスやカーネルメッセージなどを統合的に管理しており、systemd-journald が記録したログを閲覧・検索するために利用します。

特徴として:

  • サービス単位でのログ参照が可能(-u
  • 時間範囲でのフィルタリングが可能(--since, --until
  • grep などと組み合わせることで柔軟な抽出が可能

つまり、systemd 環境では標準的なログ確認手段です。

基本コマンド

journalctl -u <サービス名> --since "YYYY-MM-DD 00:00:00" --until "YYYY-MM-DD 00:00:00" \
  --output=short-iso --no-pager \
| grep -Ei "<パターン>"

オプションの意味

  • -u systemd サービス名を指定。
  • --since / --until 期間を指定してログを絞り込み。
  • --output=short-iso ISO形式で日時を見やすく表示。
  • --no-pager less などのページャを使わず、そのまま出力。
  • grep -Ei "" ログから特定の文字列を抽出。

例1: JupyterHub の起動確認

JupyterHub が サーバー準備完了を出力したログを抽出する場合:

journalctl -u jupyterhub --since "2020-08-01 00:00:00" --until "2020-09-01 00:00:00" \
  --output=short-iso --no-pager \
| grep -Ei "Server .* is ready"

例2: nginx の起動確認

nginx が 起動したタイミングを確認する場合:

journalctl -u nginx --since "2020-08-01" --until "2020-09-01" \
  --output=short-iso --no-pager \
| grep -Ei "started"

注意: grepパターンの汎用性

  • "Server .* is ready" (JupyterHub)
  • "started" (nginx)

これらのパターンは一般的ですが、実際のログメッセージは各サービスのバージョンや設定によって異なる場合があります。

他サービスでも応用可能

同じパターンは以下のようなサービスでも使えます:

  • docker
  • sshd
  • httpd
  • mysqld

他のパターン

  • エラー検出

    | grep -Ei "error|failed"
  • セッション確認(例: sshd ログイン履歴)

    | grep -Ei "session opened"

まとめ

  • journalctl は systemd の標準ログ管理ツール
  • journalctl -u で特定サービスのログを確認できる
  • grep と組み合わせれば、起動完了やエラー、セッション履歴などを柔軟に抽出可能
  • JupyterHub に限らず、nginx, docker, sshd など あらゆる systemd サービスに応用できる
Last modified: 2025-09-27

Author