Windows から Linux へのロードマップ: 第 5 回 Linux でのロギング

ログを扱う

IBM e ビジネス・アーキテクトである Chris Walden が、9 回の developerWorks シリーズで読者の運用スキルを Windows 環境から Linux 環境へ移行する道案内をしていきます。今回はセキュリティ面と情報源としての面からログの追跡や操作、置き換えについて説明します。

Chris Walden, e-business Architect, IBM

Chris Walden は IBM Developer Relations Technical Consulting (dragonslayers としても知られています) の e ビジネス・アーキテクトです。テキサス州オースチン在住で教育、設置使用指導、IBM ビジネス・パートナーへのコンサルティングにあたっています。自他共に認める半 Linux 狂発症途中で、聞く耳持つ人がいれば誰にでも良い知らせを広めています。e ビジネス・アーキテクトとしての仕事以外に彼の地域にある、すべて Linux による基幹サーバーを管理しており、そこでは多種多様なユーザー環境でのファイル、印刷その他のアプリケーション・サービスを扱っています。コンピューター業界でフィールド・サポートから Web アプリケーション開発やコンサルティングまで 10年の経験があります。



2003年 11月 11日

どんなシステムを管理するのであれ、成功の秘訣は、システムで何が起きているかを知ることです。Linux には優れたログ機能があり、またログの詳細を設定できるようになっているのです。

Linux のログはプレーン・テキストなので、特別なツールを使わなくても読んだり、検索したりすることができます。ログをスキャンし、その内容に応じて動作する自動機能を実行することもできます。

Linux のログは /var/log ディレクトリにあります。システムが維持管理するログファイルはいくつかありますが、他のサービスやプログラムもそのログファイルをここに置いている可能性があります。大部分のログは root にしか読めませんが、単純にそのファイルへのアクセス権限を変更するだけで読めるようにすることができます。

/var/log/messages

メッセージ・ログはシステム・ログファイルの核心部分です。ここにはシステムが起動した時のブート・メッセージや、システム実行中のステータス・メッセージが含まれています。I/O のエラー、ネットワークやその他一般的なシステム・エラーがこのファイルにリポートされます。他の情報、例えば誰かが root になったのはいつか、といった情報もここにリストアップされます。(DHCP サーバーのような) サービスが実行中であれば、このメッセージ・ファイルでその動作を監視することができます。トラブル対応する際に真っ先に調べるのは普通、/var/log/messages です。

/var/log/XFree86.0.log

このログは Xfree86 Xwindows サーバーが最後に実行された時の結果を示します。グラフィカルなモードがうまく動作しない時には普通、このファイルを調べればどこが悪いのか分かります。

他のログ

使っている Linux のディストリビューションや実行しているサービス、アプリケーションによって、/var/log ディレクトリには他にもログファイルがあるかもしれません。例えばメール・サーバーの実行に関連したログ、リソース共有、自動タスク等々に関連したログもあるかもしれません。

準備は良いですか?置き換え!

/var/log ディレクトリにあるいくつかのファイルの名前が、数字で終っているのに気がつくでしょう。これらは置き換えられたアーカイブです。ログファイルは大きく、扱いにくくなりがちです。Linux には現在のログ情報と古い無関係なデータが混じらないように、ログを置き換えるコマンドが用意されています。普通、logrotate は時間が来ると自動的に実行されますが、手動で実行することもできます。logrotate が実行されると、現在のログファイルのファイル名の終わりに「.1」が付加されます。するとそれ以前に置き換えられたファイル名の後の番号は「.2」、「.3」などに変えられます。番号が大きいほどログファイルとしては古いことになります。

/etc/logrotate.conf ファイルを編集することで logrotate の自動動作を設定することもできます。logrotate の詳細については man logrotate を読んでください。


ログ・ツール

テキスト用のツールであればどんなものでもログファイルを扱えます。特に使いやすいものを以下に挙げます。

dmesg
最後のシステム・ブートからのブート・ログをちょっと見たいという時には dmesg を使ってみてください。これのコマンドを使うと大量のテキストを吐き出すので、ビューアーにパイプして使うのが普通です。

dmesg | more

上のコマンドはブート・メッセージを一度に一画面分表示します。

tail
時にはログが行われている最中にログファイルを見たいこともあります。Tail はテキストファイルの最後の数行を表示するようにできています。-f スイッチを付加することで、tail はログに新しい行が追加される度にその新しい行を表示し続けるようになります。

tail -f /var/log/messages

上のコマンドは /var/log/messages の最後の 10 行を表示し、ファイルを監視し続け、新しいログ活動があるとそれを出力します。tail -f コマンドを停止するには、Ctrl + C を使って処理を停止させます。

more
More は DOS の more と同じ動作をします。More でファイルを指すこともでき、また出力をパイプし、一度に一画面分の情報を表示させることができます。例えば、Xfree86 起動ログファイルの内容を一度に一画面分表示するには次のようにします。

more /var/log/XFree86.0.log

ファイルの表示を止めるには「q」キーまたは [Ctrl]-C を押します。

less
Less も別のテキスト・ビューアーですが、ファイルをスクロールすることができ、情報の検索をすることもできます。

less /var/log/messages

上のコマンドは /var/log/messages ファイルの内容を表示します。ファイルの表示を止めるには「q」キーを、less の使い方のヘルプを見るには「h」キーを押します。

logger
ログファイルに自分のメッセージを入れたいことがあります。ログのテキスト・ファイルにメッセージを追加することもできますが、ログ情報の形式と同じ形式で追加しなければなりません。またロギング・システムがカスタム化されている場合には自分のメッセージのコードを変更しなければなりません。Logger コマンドを使えばロギング機構に自分のメッセージを送ることができます。スクリプトの中でこのコマンドを使うと、実行とエラーに関するメッセージを記録できます。


ロギングのカスタム化

ロギングをコントロールするサービス (デーモン) として 2 つ、klogdsyslogd があります。klogd はカーネル・メッセージのみを扱います。syslogd はアプリケーションなど、他のシステム・メッセージを扱います。どちらのサービスの振る舞いも/etc/syslog.conf ファイルと/etc/sysconfig/syslog ファイルを編集することで設定できます。完全にカスタム化したロギングについてはこの記事の範囲外ですが、記事の最後に挙げた参考文献に詳細が説明されています。/etc/sylogd.conf の man ページを見るだけでも多くのことを知ることができます。

要はソフトウェアが生成する各メッセージには、そのメッセージがどこから来たか、何のメッセージかを識別する情報が含まれているということです。そうしたメッセージで何をしたいか、/etc/syslog.conf ファイルで規定することができるのです。そのメッセージをメッセージ・ファイルにダンプすることもできるし、カスタム・ファイルにダンプすることもできます。リモートのホストに送り、そのホストが独自の syslogd 設定に従ってそのメッセージを処理することもできます。リモート・ロギングは素晴らしいセキュリティ・フィーチャーです。リモート・システムにログを置くことで、セキュリティ妨害がログファイルを変更して妨害の痕跡を簡単に消したりできないようにしています。

下記は man /etc/syslog.conf ページから引用した、ロギングのカスタム化の例です。

ロギングのカスタム化
# Kernel messages are first, stored in the kernel
              # file, critical messages and higher ones also go
              # to another host and to the console
              #
              kern.*                       /var/adm/kernel
              kern.crit                    @finlandia
              kern.crit                    /dev/console
              kern.info;kern.!err          /var/adm/kernel-info

最初の記述はカーネル機構を持つのメッセージを /var/adm/kernel ファイルに送ります。

2 番目の記述は crit またはそれ以上の優先度を持つすべてのカーネル・メッセージを finlandia というリモート・ホストに送ります。もしホストがクラッシュし、ディスクが修復不能エラーを起こした時には、保存されたメッセージが読めないこともあるので、これは便利です。保存されたメッセージがリモート・ホストにもあれば、クラッシュの原因を見つけることができるかもしれません。

3 番目の記述はこれらのメッセージを実際のコンソールに送り、マシンを操作している人にもメッセージが見えるようにします。

4 番目の記述は syslogd に対して、/var/adm/kernel- info ファイルにある、info から warning までの優先度を持つすべてのカーネル・メッセージを保存するように命令します。err またはそれ以上の優先度を持つメッセージはすべて除外されます。

この例で示すように、ロギングがカスタマイズできることで Linux 環境が非常に柔軟になり、制御もしやすくなるのです。


Webmin によるログ設定

Webmin にはログファイルを取り扱うモジュールがあります。

図 1. Webmin のシステム・ログの画面
Webmin のシステム・ログの画面

設定されたログファイルがすべて表示されています。ログファイルの上でマウスをクリックするとログの設定を変更することができます。

図 2. Webmin のログ編集画面
Webmin のログ編集画面

または View をクリックしてもログファイルの内容を見ることができます。

コンソールからログファイルを見る

Linux ではログファイルはプレーン・テキストで書かれているので、特別なツール無しにファイルを見ることができます。テキストファイルのビューアーならばどれでも Linux のログファイルを表示できるのです。Mozilla のようなブラウザではログファイルの表示に加えて検索機能もあります。Linux にはテキストファイルを見るためのコンソール・ツールもあります。more は MS DOS の more と同じように一度に一ページ分だけ、ファイルを表示します。less コマンドはファイルを読み取り専用のビューアーで表示し、上下スクロールと検索機能もあります。コマンドラインから less /var/log/messages を入力してみてください。

Webmin のこのモジュールは /etc/syslog.conf ファイルと相互動作するので、一方に対して何かの操作をすると、もう一方にもそれが反映されます。

まとめ

ログファイルはシステムの維持管理やトラブル対応のために決定的に重要なものです。Linux のログはテキスト・ファイルに対して行われるので、ログファイルを見るのに特別なツールは必要ありません。テキスト・ファイルはカスタム・スクリプトやカスタム・プログラムで扱うにも簡単です。

ログは大きくなりすぎないように、また現在のデータとずっと古い情報とを分離するために、順次置き換えられます。またログの置き換えは設定可能です。

ログには非常に柔軟な設定が可能で、セキュリティやバックアップを目的に、ログを別のシステムに保存することもできます。また自分独自のスクリプトやプログラムからシステム・ログ・メッセージを生成することができます。これらのメッセージは syslogd デーモンで認識、処理されます。

参考文献

  • Windows から Linux へのロードマップシリーズの他の記事も参考にしてください。 (developerWorks, 2003年 11月)
  • syslog.conf man のページにはログをどう設定するかについて非常によく説明されています。このページを見るには info syslog.conf をタイプします。
  • syslogd man ページには syslogd がどう動作するかについて、セキュリティ問題を含めて非常によく全体的に説明されています。info syslogd をタイプしてこのページを見てください。
  • .config ファイルについてさらに詳しくは、IBM developerWorks の記事 Understanding Linux configuration files を読んでみてください。
  • developerWorks Linux ゾーンでは、Linux に関する豊富な資料をご覧いただけます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=230450
ArticleTitle=Windows から Linux へのロードマップ: 第 5 回 Linux でのロギング
publish-date=11112003