ウェブサイト検索

Ubuntuにおけるエラーログの表示と監視の完全ガイド


システムログは、エラーをトラブルシュートする際の最良の友です。Ubuntuでログを監視するために知っておくべきすべてのことを以下に示します。

コンピュータが正しく動作していないとき、そしてその理由がわからないときは非常にイライラします。Ubuntuで遭遇する問題すべてに簡単な解決策があるわけではありませんが、Ubuntuエラーログなどのリソースを使って、PCの問題をトラブルシュートし、診断することができます。

Ubuntuのログとは何ですか?

Ubuntuのログは、コンピュータ上で発生するすべてのイベントの記録を保存する包括的なファイルです。これには、ハードウェア、オペレーティングシステム、さらにはいくつかのソフトウェアに関するログ情報が含まれます。

これらのログは、トラブルシューティングと診断プロセスにとって非常に貴重です。これらは、タイムスタンプ、コンテキスト、およびシステム全体で発生するイベントに関する詳細情報などの情報を提供します。これらのログを活用するためには、まず最も重要なタイプを知っておく必要があります。

Ubuntuログの種類

すべての情報を1つのログに書き込むのではなく、Ubuntuは異なる目的に合わせて設計された別々のログに情報を記録します。リストアップするにはログが多すぎますが、トラブルシューティングに使用する前に認識しておくべき重要なログ(およびログの種類)がいくつかあります。

おそらく、すべてのログの中で最も目立つのは、systemdジャーナルです。systemdはLinuxにおける不可欠なサービスマネージャーです。その結果、さまざまなオペレーティングシステムサービスの問題はsystemdジャーナルに記録されます。このログはjournalctlコマンドで閲覧できます。

システムログも非常に重要です。これらのログはUbuntuのさまざまな部分に直接関係しており、システムメッセージのようなものが含まれている場合があります。一部のシステムログには次のようなものがあります:

  • 認証ログ: sudoコマンドやユーザーログインなど、認証を必要とするプロセスは、このログに記録されます。
  • デーモンログ: このログは、BluetoothやSSHなどのバックグラウンドサービス(またはデーモン)に関するものです。
  • デバッグログ:このログは、システムによって提供されるデバッグ情報と、syslogdにログを記録するアプリケーションによって提供される情報を示しています。
  • カーネルログ: このログには、Linuxカーネルに関する活動の記録が含まれています。
  • システムログ: このログは、システム上のほとんどの種類のグローバル活動を含む記録を保存します。
  • 失敗ログ: このログは失敗したログインの記録を保存します。これは、誰かがあなたのシステムに侵入しようとしたかどうかを確認するのに特に役立ちます。

あなたのコンピュータには、/var/log ディレクトリに保存されているアプリケーションログ(ApacheログファイルやMySQLログファイルなど)もあるかもしれません。lsコマンドを使用して、現在コンピュータに保存されているすべてのログファイルを確認できます:

ls /var/log

Ubuntuでログを読む方法

システムのさまざまな種類のログに慣れたので、これらが保存している情報を掘り下げる準備が整いました。始める前に、すべてのシステムログが同じ方法で書かれているわけではないことに注意することが重要です。

一部のログはプレーンテキストファイルとして保存され、他のログはバイナリファイルとして保存されています。システムのレコードを効果的に解析したい場合は、両方のタイプのファイルとそれに対応するコマンドラインツールに慣れる必要があります。

プレーンテキストファイルのログは、RSYSLOG_TraditionalFileFormatとして知られるテンプレートを使用し、タイムスタンプ、ホスト名、アプリケーション、およびメッセージの4つの基本的なフィールドを含みます。例えば、カーネルログはこのテンプレートを使用します:

プレーンテキストのログとは異なり、バイナリファイルのログは簡単には読み取れません。utmp、wtmp、btmpのようなログを読むには、who、last、lastbなどのコマンドラインユーティリティを使用する必要があります。utmpのバリアント用のコマンドutmpdumpや、ジャーナル用のsystemctlなども、バイナリログ情報を読みやすい形式で出力するように設計されています。

ほとんどの状況において、ターミナルでこれらのログを効果的に解析する方法を知っていることは重要です。grepやtailのようなコマンドを使用して、システムログ全体を苦労して読み通さなくても、特定の情報を引き出すことができます。

使用できる最良のコマンドの一部は次のとおりです:

  • grep: ファイル内の文字列を検索します
  • tail: ファイルの末尾から10行を印刷します
  • ヘッダー:ファイルの最初から10行を印刷します
  • ソート: あなたの要件に基づいて再編成されたファイルを印刷します

utmpdumpやsystemctlなどのコマンドラインツールには、ターミナルで作業する際に考慮すべき役に立つフラグがあります。これらのフラグを使用することで、コマンドを変更したり、ターミナルに表示される内容をより細かく制御したりすることができます。

journalctlコマンドに特に役立つフラグは以下の通りです:

  • -b: journalctlが最後の再起動後に収集されたエントリのみを返すことを強制します
  • --開始 “YYYY-MM-DD HH:MM:SS” --終了 “YYYY-MM-DD HH:MM:SS”: journalctlに指定された日付の前後のエントリのみを返すよう指示します。
  • -p 数: syslogの優先度レベルによってエントリをフィルタリングします (0/緊急から7/デバッグまでの範囲)

Ubuntuログでのエラー解決

さあ、様々な種類のシステムログに慣れ、効果的にそれらを読む方法を知ったので、残る唯一のことは、収集した情報をトラブルシューティングプロセスに適用することです。このプロセスには通常、いくらかの創造性が必要です。

トラブルシューティングに取り組む際は、まず直面している問題の顕著な特徴について考えるのが良いアイデアです。その問題は特定のアプリケーションを開くときに発生しますか?問題が発生するたびにシステムがクラッシュして再起動しますか?

問題の特徴について考えると、それは自然にその情報を得るための最良のログのいくつかに導いてくれます。例えば、システムがブートプロセス中に問題を抱えている場合、journaldのブートエントリを参照することで、役立つ情報が得られるかもしれません。

次のコマンドを入力して、journaldに記録されたすべてのブートを表示します:

journalctl --list-boots

ターミナルは記録されたブートのリストを印刷します。最近のブートはリストの下部にあります。エラーが発生したログ記録されたブートを見つけるまで、各ブートの記録された日時を確認してください。

最も左の列から数字をNUMとして取り、それに続くコマンドを入力してブートに関する詳細情報を取得してください:

journalctl -b -NUM -n

ブートに関する情報の総合的な記録が表示されます。ブートプロセス中に何らかの異常エラーが発生した場合、この記録の情報を使用してトラブルシューティングを進めることができます。

同じ原則は他の多くの問題にも当てはまります。しかし、コンピュータが直面している問題についてあまり知識がない場合、どこから始めればよいのかが難しいことがあります。Ubuntuシステムのさまざまな問題に特に役立ついくつかのログがあります。

syslogはトラブルシューティングプロセスを開始するのに最適なログです。それは実質的にグローバルなログであり、対処している問題に関する情報が含まれている可能性が非常に高いです。認証に関する問題(例えば、sudoパスワードが機能しないエラーなど)やブートに問題がある場合は、auth.logまたはboot.logを確認してください。

問題に関連するキーワードを使って最も関連性のあるログを検索してください。たとえば、認証に問題がある場合、次のコマンドを使ってauth.logから記録を取得できます:

cat /var/log/auth.log | grep 'Authentication failure'

最終的には、優れた洞察を提供する情報を必ず見つけることができるでしょう。エラーログからの情報をウェブでのリサーチと組み合わせると、システムの問題をすぐに解決するのに役立つリソースを見つける可能性が非常に高くなります。

Linuxのエラーをトラブルシューティングするためのオンラインリソースを参照してください

トラブルシューティングプロセスを一人で行う必要はありません。コンピュータの問題についての情報を集める際には、Ask UbuntuやMakeUseOfの詳細なガイドのようなオンラインリソースを利用して、最終的にPCの診断と修理に近づくことができます。

関連記事: