12-LPIC「level1」

LPIC|level 1【システムログ】

目標

  • syslog、rsyslog、およびsyslog-ngについて理解する
  • loggerコマンド、logrotate、journalctlコマンドについて理解する

システムログ

Linuxのsyslog、rsyslog、およびsyslog-ngは、いずれもシステムのログメッセージを管理し、収集するための異なるツールやデーモンです。これらはすべて、LinuxやUnixベースのシステムでログ管理を行うために使用されますが、それぞれに特徴や違いがあります。

syslog

syslogは、ログメッセージの標準的なインターフェースとプロトコルを提供する、Unix系システムにおける最も基本的なログシステムです。元々、1970年代にBSD (Berkeley Software Distribution) に組み込まれて以来、広く使用されています。

特徴

  • 標準的なログ管理:システムのエラー、警告、情報メッセージなどをログファイルに記録するための標準化された方法を提供します。
  • ログの分類:メッセージは優先度(例えば、info、warn、error)と施設(例えば、auth、daemon、kern)に基づいて分類されます。
  • 単純な構造:シンプルな構造で、ほとんどのLinuxシステムで利用可能です。ログは通常、/var/log/syslogまたは/var/log/messagesに保存されます。

制限

  • より高度な機能や拡張性が欠けているため、特に複雑なシステムや高トラフィックな環境では不便に感じることがあります。

syslogd:syslogdは、システムのログメッセージを受け取って処理するデーモン(バックグラウンドで動作するプログラム)です。Unix系システムでは、システムのイベントやログメッセージを管理するために使用されており、syslogプロトコルに基づいています。

主な機能

ログメッセージの収集: システム内のさまざまなサービスやアプリケーションから送信されるログメッセージを受信します。

ログの出力先:ログメッセージの出力先は、設定でしたファイルに行われます。
例えば、(/var/log/messages など)やリモートサーバーに保存されます。

施設と優先度の指定:syslogdは、ログメッセージを「施設(facility)」と「優先度(priority)」に基づいてフィルタリングできます。施設はメッセージの発生源(例えばauth、daemon、kern)を示し、優先度はメッセージの重要度を示します。

注意点:現在のシステムでは、syslogdは一般的にrsyslogやsyslog-ngに置き換えられており、syslogd自体は使われないことが多いです。

klogd:klogdは、カーネルからのログメッセージを処理するデーモンです。主にカーネルのメッセージを受信し、それをsyslogシステムに渡します。

主な機能

カーネルログの収集:Linuxカーネルから出力されるログメッセージ(例えば、起動メッセージやカーネルエラー)をsyslogデーモンに渡します。

/proc/kmsgからの読み取り:klogdは、カーネルログメッセージを/proc/kmsgファイルから読み取って処理します。

注意点:現在、klogdはあまり使われることがなく、カーネルログは直接rsyslogやsyslog-ngによって処理されることが一般的です。最近では、dmesgコマンドやjournalctlがカーネルログを表示するために広く使用されます。

rsyslog

rsyslogは、syslogの後継として登場した、より高度なロギングシステムです。syslogの機能を拡張し、ネットワーク経由でのログ転送や、複雑なフィルタリング、ログの永続化、パフォーマンスの向上を提供します。

特徴

  • パフォーマンス向上:より多くの並列処理が可能で、大規模な環境に適しています。
  • リモートログ:rsyslogはネットワーク越しにログを送信したり、他のサーバーからログを収集したりできます。UDPやTCP、TLS(暗号化通信)などをサポートしています。
  • 柔軟な設定:ログをどのように処理するか、どこに保存するかなどを非常に柔軟に設定できます。フィルタリング、出力先の指定、ログの保持期間などをカスタマイズ可能です。
  • モジュール化:追加のモジュールをロードして、さまざまなプロトコル(例えば、IMAPやRelpなど)を利用できます。

利用するメリット

  • スケーラビリティ:高トラフィックなシステムに対応できる高いパフォーマンス。
  • セキュリティ:TLSなどを用いた安全な通信が可能。
  • 豊富な機能:ログの転送、フィルタリング、リモートサーバーへの出力など、多機能。

syslog-ng

syslog-ngは、syslogおよびrsyslogと同様にログ管理を提供するツールですが、さらに柔軟な設定と多くの機能を提供します。特に複雑なログ管理が必要な大規模なシステムでよく使用されます。

特徴

  • 高度なログ収集:syslog-ngは、ログメッセージをファイル、データベース、リモートサーバーなど、さまざまな宛先に収集できます。多くの入力ソース(ログファイル、データベース、ネットワーク)や出力先(ファイル、リモートサーバー、Kafka、ElasticSearchなど)をサポートします。
  • 柔軟なフィルタリングとルーティング:syslog-ngは、受信したメッセージをさまざまな条件でフィルタリングし、異なる出力先にルーティングできます。これにより、異なるアプリケーションやシステムに対して異なるログポリシーを適用できます。
  • セキュリティ:TLSを使用した暗号化されたログ転送、署名によるログの検証機能もサポートしています。
  • パフォーマンスとスケーラビリティ:高スループットで動作し、分散システムでも利用できるように設計されています。

利用するメリット

  • 多機能:ログを多様な方法で収集・出力可能。
  • 高度なログフィルタリング:複雑なルールに基づいてログを処理できる。
  • 拡張性:様々なプラグインやモジュールを使って機能を追加可能。

一覧表で比較

特徴/ツールsyslogrsyslogsyslog-ng
標準化標準的拡張高度な拡張
パフォーマンス低~中
柔軟性
セキュリティ基本的高(TLS対応)高(TLS対応)
ネットワーク転送不可可(複数プロトコル対応)可(豊富なプロトコル対応)
利用シーン小規模・基本的なログ管理中規模~大規模環境大規模で多様なログ管理
  • syslogは基本的なログ機能を提供し、シンプルなシステムに最適です。
  • rsyslogは、パフォーマンスや柔軟性が高く、大規模システムやリモートログ収集が必要な環境で使われます。
  • syslog-ngは、最も高度で柔軟な設定が可能で、特に多様なログの収集と出力が求められる環境に向いています。

loggerコマンド

loggerコマンドは、ユーザーがシステムのログにメッセージを書き込むために使用するコマンドラインツールです。このツールを使うことで、シェルから簡単にログメッセージを送信できます。

主な機能

  • システムログにメッセージを追加: ユーザーがシェルから直接、ログメッセージをsyslogシステムに送信できます。
  • ログの優先度や施設の指定: loggerコマンドを使って、施設や優先度を指定したメッセージを送ることができます。

使用例

logger "This is a test message"

このコマンドは、syslogシステムに「This is a test message」というメッセージを記録します。

より詳細な使い方

logger -p local0.info "This is an info message from local0"

この例では、local0という施設とinfoという優先度でログメッセージを送信しています。

loggerコマンドは、スクリプト内でログメッセージをシステムログに記録したい場合に非常に便利です。

logrotate

logrotateは、システムやアプリケーションのログファイルがサイズや時間で膨大にならないように管理し、自動的にローテーション(循環)させるためのツールです。主にログの圧縮、アーカイブ、削除を行います。

主な機能

ログファイルのローテーション: 指定されたサイズまたは日付に基づいてログファイルをローテーションし、新しいファイルを作成します。

圧縮とアーカイブ:ローテーションされた古いログファイルは圧縮して保存されます(例えば.gz形式)。

設定ファイルによる柔軟な管理:/etc/logrotate.conf や /etc/logrotate.d/ 配下の設定ファイルで、どのログファイルをどのようにローテーションするかを細かく指定できます。

設定例:例えば、/var/log/messagesのログファイルを1週間ごとにローテーションし、最大5回分のログを保持する設定を行うには、以下のような設定を/etc/logrotate.d/に追加します。

/var/log/messages {
    weekly
    rotate 5
    compress
    delaycompress
    missingok
    notifempty
}

ログファイルが大きくなりすぎるのを防ぐために、logrotateは非常に重要なツールです。特にサーバーや大規模システムでは必要不可欠です。

journalctlコマンド

journalctlは、systemdジャーナル(journald)からログメッセージを取得し、表示するためのコマンドです。systemdに基づくシステムでは、syslogよりもjournaldを使ってログメッセージを管理することが一般的です。

主な機能

システムログの表示: システム全体や特定のサービスのログメッセージを表示できます。

ログのフィルタリング:日付、サービス、ログレベル、優先度などでフィルタリングして表示することができます。

ログの永続化:デフォルトでは、journaldはログをメモリに保存し、システムが再起動するたびに消えますが、永続的に保存することも可能です。

使い方例

全てのログメッセージを表示

journalctl

特定のサービスのログを表示(ここではsshdサービスのログメッセージを表示します。)

journalctl -u sshd

最新のログを表示(tail -fに似た機能で、ログの新しいエントリが表示されるたびにリアルタイムで追跡できます。)

journalctl -f

特定の日付のログを表示

journalctl --since "2025-06-30" --until "2025-07-01"

journalctlはsystemdベースのシステムに特有のツールであり、syslogやrsyslogを使うシステムでは使用されません。

journaldは二重書き込みやシステムのクラッシュ後のログ整合性にも対応しており、堅牢性が高いとされています。

今回は以上になります。

「Linux」おすすめ書籍6選【初心者・脱初心者用】| 現役エンジニア&プログラミングスクール講師「Linux」初心者の方がLinuxの操作や仕組みを理解するためのお勧めの書籍について取り上げています。また中級者として更に進んだ学習ができる書籍についても1冊取り上げています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
12-LPIC「level1」

LPIC|level 1【パーティションとファイルシステム】

2025年6月1日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site