GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでjournalctlを使用してログを分析する方法

Systemdは、すべての主要なLinuxベースのオペレーティングシステムのデフォルトのシステムマネージャーです。カーネルお​​よびシステムサービスによって生成されたすべてのメッセージを処理するジャーナルデーモンを提供します。 journaldデーモンは、使用可能なすべてのソースからデータを収集し、それらをバイナリ形式で保存して、簡単かつ動的に操作できるようにします。 Systemdは、ジャーナルログの読み取りと分析に使用できるjournalctlと呼ばれるコマンドラインツールを提供します。 journalctlを使用すると、ログをリアルタイムで分析および監視できます。

このガイドでは、journalctlを使用してLinuxでログを分析する方法を説明します。

前提条件

  • Atlantic.Netクラウドプラットフォーム上の新しいUbuntu20.04サーバー
  • サーバーで構成されているrootパスワード

Atlantic.Netクラウドサーバーを作成する

まず、Atlantic.Netクラウドサーバーにログインします。 2GB以上のRAMを搭載したオペレーティングシステムとしてUbuntu20.04を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。

Ubuntu 20.04サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。

apt-get update -y

ジャーナルの構成

まず、ジャーナルログを保存するディレクトリを作成します。

mkdir /var/log/journal

次に、次のコマンドを使用して適切な所有権を設定します。

chown -R root:systemd-journal /var/log/journal

次に、journaldのデフォルト構成ファイル/etc/systemd/journald.confを編集して、新しいディレクトリを定義します。

nano /etc/systemd/journald.conf

次の行を変更します:

Storage=persistent

ファイルを保存して閉じてから、systemd-journaldサービスを再起動して変更を適用します。

systemctl restart systemd-journald

これで、/ var / log/journalディレクトリを確認できます。

ls -l /var/log/journal

次の出力が表示されます。

drwxr-xr-x 2 root systemd-journal 4096 Apr 21 11:35 97bcb1f0d9aa4b339adefc87f1332d04

journalctlを使用してログを分析する

journaldデーモンによって収集されたすべてのログを印刷するには、journalctlコマンドを実行します。

journalctl

出力:

-- Logs begin at Wed 2021-04-21 07:00:15 UTC, end at Wed 2021-04-21 11:40:12 UTC. --
Apr 21 07:00:15 ubuntu2004 kernel: Linux version 4.19.0-9-amd64 ([email protected]) (gcc version 8.3.0 (Debian 8.3.0-6)) #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07)
Apr 21 07:00:15 ubuntu2004 kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-4.19.0-9-amd64 root=UUID=d4f8c3a8-164f-4e15-a198-6124ce8719b5 ro
Apr 21 07:00:15 ubuntu2004 kernel: x86/fpu: x87 FPU will use FXSAVE
Apr 21 07:00:15 ubuntu2004 kernel: BIOS-provided physical RAM map:
Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x0000000000100000-0x000000007ffdbfff] usable
Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x000000007ffdc000-0x000000007fffffff] reserved
Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
Apr 21 07:00:15 ubuntu2004 kernel: BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
Apr 21 07:00:15 ubuntu2004 kernel: NX (Execute Disable) protection: active

より詳細な出力が必要な場合は、次のコマンドを実行します。

journalctl -o verbose

出力:

-- Logs begin at Wed 2021-04-21 07:00:15 UTC, end at Wed 2021-04-21 11:40:29 UTC. --
Wed 2021-04-21 07:00:15.461318 UTC [s=1baac74dce14445f9a6670f231104955;i=1;b=41c491f449fa44c288474cf9f14386c0;m=1ee776;t=5c0761d6627c6;x=4c88a9
    _SOURCE_MONOTONIC_TIMESTAMP=0
    _TRANSPORT=kernel
    PRIORITY=5
    SYSLOG_FACILITY=0
    SYSLOG_IDENTIFIER=kernel
    MESSAGE=Linux version 4.19.0-9-amd64 ([email protected]) (gcc version 8.3.0 (Debian 8.3.0-6)) #1 SMP Debian 4.19.118-2+deb10u1
    _BOOT_ID=41c491f449fa44c288474cf9f14386c0
    _MACHINE_ID=97bcb1f0d9aa4b339adefc87f1332d04
    _HOSTNAME=ubuntu2004
Wed 2021-04-21 07:00:15.461357 UTC [s=1baac74dce14445f9a6670f231104955;i=2;b=41c491f449fa44c288474cf9f14386c0;m=1ee79e;t=5c0761d6627ed;x=eaf7df
    _SOURCE_MONOTONIC_TIMESTAMP=0
    _TRANSPORT=kernel
    SYSLOG_FACILITY=0
    SYSLOG_IDENTIFIER=kernel
    _BOOT_ID=41c491f449fa44c288474cf9f14386c0
    _MACHINE_ID=97bcb1f0d9aa4b339adefc87f1332d04
    _HOSTNAME=ubuntu2004
    PRIORITY=6
    MESSAGE=Command line: BOOT_IMAGE=/boot/vmlinuz-4.19.0-9-amd64 root=UUID=d4f8c3a8-164f-4e15-a198-6124ce8719b5 ro

使用可能なすべてのブートログを一覧表示するには、次のコマンドを実行します。

journalctl --list-boots

出力:

 0 41c491f449fa44c288474cf9f14386c0 Wed 2021-04-21 07:00:15 UTC—Wed 2021-04-21 11:41:44 UTC

最新の再起動以降のすべてのログを表示するには、次のコマンドを実行します。

journalctl -b

最新のログエントリを表示するには、次のコマンドを実行します。

journalctl --lines 5

出力:

-- Logs begin at Wed 2021-04-21 07:00:15 UTC, end at Wed 2021-04-21 11:45:13 UTC. --
Apr 21 11:45:06 ubuntu2004 sshd[12088]: Failed password for invalid user telecomadmin from 103.42.205.111 port 64471 ssh2
Apr 21 11:45:08 ubuntu2004 sshd[12088]: Connection closed by invalid user telecomadmin 103.42.205.111 port 64471 [preauth]
Apr 21 11:45:13 ubuntu2004 sshd[12092]: Invalid user admin from 81.70.161.162 port 60614
Apr 21 11:45:13 ubuntu2004 sshd[12092]: pam_unix(sshd:auth): check pass; user unknown
Apr 21 11:45:13 ubuntu2004 sshd[12092]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=81.70.161.162

ログを継続的に印刷するには、次のコマンドを実行します。

journalctl --follow

出力:

-- Logs begin at Wed 2021-04-21 07:00:15 UTC. --
Apr 21 11:45:36 ubuntu2004 sshd[12106]: Disconnected from invalid user babi 104.131.102.169 port 54872 [preauth]
Apr 21 11:45:40 ubuntu2004 sshd[12108]: Invalid user telecomadmin from 103.108.241.111 port 60842
Apr 21 11:45:40 ubuntu2004 sshd[12108]: pam_unix(sshd:auth): check pass; user unknown
Apr 21 11:45:40 ubuntu2004 sshd[12108]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=103.108.241.111
Apr 21 11:45:41 ubuntu2004 sshd[12110]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=101.32.11.137  user=root
Apr 21 11:45:42 ubuntu2004 sshd[12108]: Failed password for invalid user telecomadmin from 103.108.241.111 port 60842 ssh2
Apr 21 11:45:43 ubuntu2004 sshd[12108]: Connection closed by invalid user telecomadmin 103.108.241.111 port 60842 [preauth]
Apr 21 11:45:43 ubuntu2004 sshd[12110]: Failed password for root from 101.32.11.137 port 43086 ssh2
Apr 21 11:45:45 ubuntu2004 sshd[12110]: Received disconnect from 101.32.11.137 port 43086:11: Bye Bye [preauth]
Apr 21 11:45:45 ubuntu2004 sshd[12110]: Disconnected from authenticating user root 101.32.11.137 port 43086 [preauth]

SSHやNginxなどの特定のサービス関連のログを表示するには、次のコマンドを実行します。

journalctl -u ssh.service
journalctl -u nginx.service

カーネル関連のログのみを表示するには、次のコマンドを実行します;

journalctl -k

エラーまたはクリティカルを含むログを表示するには、次のコマンドを実行します。

journalctl -p err -b

出力:

-- Logs begin at Wed 2021-04-21 07:00:15 UTC, end at Wed 2021-04-21 11:49:21 UTC. --
Apr 21 07:00:16 ubuntu2004 ntpd[337]: leapsecond file ('/usr/share/zoneinfo/leap-seconds.list'): expired less than 115 days ago
Apr 21 07:00:16 ubuntu2004 ntpd[337]: bind(21) AF_INET6 fe80::200:2dff:fe3a:264e%2#123 flags 0x11 failed: Cannot assign requested address
Apr 21 07:00:16 ubuntu2004 ntpd[337]: unable to create socket on ens3 (5) for fe80::200:2dff:fe3a:264e%2#123
の場合

昨日のすべてのログを表示するには、次のコマンドを実行します。

journalctl --since yesterday

午前6時から1時間前までのすべてのログを表示するには、次のコマンドを実行します。

journalctl --since 06:00 --until "1 hour ago"

ジャーナルが使用しているスペースの量を表示するには、次のコマンドを実行します。

journalctl --disk-usage

出力:

Archived and active journals take up 16.0M in the file system.

昨年のすべてのログのデータのみを保持する場合は、次のコマンドを実行します。

journalctl --vacuum-time=1years

最後の数個のログのみを表示するには、次のコマンドを実行します。

journalctl -xe

結論

上記のガイドでは、journalctlを使用してさまざまなシステムログを読み取って分析する方法を学習しました。これで、Atlantic.NetからVPSのシステムまたはアプリケーション関連の問題を特定またはトラブルシューティングできます。


Linux
  1. LinuxでSuコマンドを使用する方法

  2. LinuxでGoogleドライブを使用する方法

  3. Journalctlをクリアする方法は?

  1. LinuxでBusyBoxを使用する方法

  2. Linuxでcronを使用する方法

  3. LinuxでFINDを使用する方法

  1. Linuxのアクセシビリティ設定の使用方法

  2. Linuxでpkgsrcを使用する方法

  3. LinuxでUnzipを使用する方法