目次
システムログファイルの分析作業は、システムを分析するにあたって最も重要な 作業のうちの 1 つです。実際、システムログファイルの分析作業は、システムの メンテナンスやトラブル解析を行なう際、最初にやっておかなければならない作業 です。 openSUSE では、システムで発生した各種の事象について、ほぼすべての 詳細を自動的に記録するようになっています。通常、システムログファイルは単なる テキスト形式のファイルに記録されるため、エディタやページャなどを利用して簡単に 閲覧することができます。これらはスクリプトなどからも処理できる仕組みになって いて、内容文でフィルタする作業も簡単に行なうことができます。
/var/log/
内にあるシステムログファイル¶
システムログファイルは、必ず /var/log
ディレクトリ以下に
配置されます。下記の表では、既定の手順でインストールを行なった場合に openSUSE
から提供される、すべてのシステムログファイルに関する概要を示しています。
お使いのマシンのインストール形態によっては、 /var/log
ディレクトリ内に、ここでは説明していない他のサービスやアプリケーションからの
ログが存在する場合もあります。また、下記で説明しているファイルやディレクトリは、
関連するアプリケーションがインストールされている場合にのみ使用される
「プレースホルダ」 を示している場合もあります。また、多くの
ログファイルは root
でないと閲覧できません。
acpid
ACPI (Advanced Configuration and Power Interface) のイベントをユーザ
スペース側のプログラムに通知するデーモン、 acpid
(acpid
) が出力するログファイル
です。 acpid
では、
STDOUT
や STDERR
と同様に、すべての動作をログファイルに記録します。
apparmor
AppArmor のログファイルです。 AppArmor について、詳しくは パート 「AppArmor を利用した権利制限」 (↑セキュリティガイド) をお読みください。
audit
監査フレームワークが提供するログファイルです。
boot.msg
システムの起動処理時のログファイルです。このファイルには、カーネルが 出力した起動時のメッセージのほか、起動処理時に実行された起動スクリプトや 開始されたサービスからのメッセージがすべて記録されています。
お使いのハードウエアが正しく初期化されているかどうかや、すべてのサービスが 正しく起動できているかどうかを確認するには、このファイルをお読みください。
boot.omsg
システムのシャットダウン処理時のメッセージファイルです。このファイルには、 直近のシャットダウンや再起動で出力された、すべてのメッセージが記録されて います。
ConsoleKit/*
ConsoleKit
デーモン
(ユーザのログインのほか、コンピュータをどのように利用したのかを追跡する
デーモン) のログファイルです。
cups/
cups (common UNIX printing system) (cups
)
が記録するアクセスログとエラーログが保存されます。
faillog
すべてのログイン失敗事象を記録するデータベースファイルです。 このファイルを閲覧するには、 faillog コマンドを お使いください。詳しくは man 8 faillog をお読みください。
firewall
ファイアウオールのログファイルです。
gdm/*
GNOME ディスプレイマネージャのログファイルです。
krb5
Kerberos ネットワーク認証システムのログファイルです。
lastlog
lastlog ファイルは、各ユーザの最終ログインを記録するデータベース です。このファイルを閲覧するには、 lastlog コマンドを お使いください。詳しくは man 8 lastlog をお読みください。
localmessages
DHCP クライアントのログなど、起動スクリプトからのメッセージが 記録されるログファイルです。
mail*
メールサーバ (postfix
,
sendmail
) のログファイルです。
messages
すべてのカーネルメッセージやシステムメッセージが記録される、既定の
ログファイルです。何らかの問題が発生した場合、 /var/log/warn
とともに最初に確認しておくべきログファイルです。
NetworkManager
NetworkManager のログファイルです。
news/*
news サーバのログファイルです。
ntp
NTP (Network Time Protocol) デーモン (ntpd
) のログファイルです。
pk_backend_zypp
PackageKit (と libzypp
バックエンド) のログファイルです。
puppet/*
データセンター自動化ツールである puppet のログファイルです。
samba/*
Windows SMB/CIFS ファイルサーバである samba のログファイルです。
SaX.log
SaX2 (SUSE advanced X11 configuration tool) のログファイルです。
scpm
SCPM (system configuration profile management)
(scpm
)
のログファイルです。
warn
すべてのシステム警告とエラーが記録されるログファイルです。
何らかの問題が発生した場合、 /var/log/messages
とともに最初に確認しておくべきログファイルです。
wtmp
すべてのログイン/ログアウトやランレベルの変更、およびリモート接続の動作を 記録するデータベースファイルです。このファイルを閲覧するには、 last コマンドをお使いください。詳しくは man 1 last をお読みください。
xinetd.log
xinetd (extended Internet services daemon) (xinetd
) のログファイルです。
Xorg.0.log
X の起動時のログファイルです。 X の起動に失敗するような場合、このファイルを
お読みください。それぞれ古いログファイルは Xorg.?
.log
として保存されます。
YaST2/*
すべての YaST ログファイルが保管されるディレクトリです。
zypp/*
libzypp
のログファイルが
保管されるディレクトリです。これらのファイルを利用することで、
パッケージのインストール履歴を確認することができます。
zypper.log
コマンドラインインストーラである zypper の ログファイルです。
ログファイルは、お使いのテキストエディタで開くだけで閲覧することができます。
それ以外にも、 YaST コントロールセンターから /var/log/messages
を閲覧することができます。
テキストコンソール内でログファイルを閲覧する場合は、 less や
more を利用するのが便利です。これ以外にも、
head や tail を利用することで、ログ
ファイルの冒頭や末尾を表示することができます。ログファイルに追記される
内容をリアルタイムに閲覧するには、 tail -f
をお使いください。これらのツールについての詳細は、各マニュアルページを
お読みください。
また、ログファイル内で文字列や正規表現による検索を行ないたい場合は grep を利用します。ログファイルを自動的に処理したり、 書き換えたりしたい場合は、 awk が便利でしょう。
/var/log
ディレクトリ内に記録されるログファイルは
日々追記されるため、知らないうちに肥大化してしまうようなことがよくあります。
logrotate コマンドはそのような巨大なログファイルを
処理するツールで、これらのファイルの管理を容易にし、肥大化を制御するための
仕組みが備わっています。具体的にはログファイルの自動的なローテーション
(切り替え) や削除、圧縮やメール送付などに対応しています。また、ログファイルは
定期的 (日次、週次、月次) に処理させることができるほか、指定したサイズを
超えた場合などを指定することができます。
logrotate は通常、日次の cron ジョブとして実行します。
また、サイズ超過によるものや logrotate を 1 日に複数回
実施したり、 --force
オプションを指定したりしない限り、
1 日 1 回以上のログファイル処理は行なわれません。
logrotate の中枢となる設定ファイルは
/etc/logrotate.conf
です。ログファイルを生成するような
プログラム (たとえば apache2
など)
の場合、そのシステムパッケージには /etc/logrotate.d/
内に配置される独自の設定ファイルが含まれています。
/etc/logrotate.d/
ディレクトリは、
/etc/logrotate.conf
から読み込むように指定しています。
例4.1 /etc/logrotate.conf の設定例¶
# 詳細は "man logrotate" をお読みください。 # ログファイルを毎週ローテーション (切り替え) します weekly # 4 週分までの過去ログを保存します rotate 4 # 古いログファイルをローテーションした場合、新しい (何もない) ファイルを作成します create # ローテーションしたファイルには、接尾辞として日付を付与します dateext # ログファイルを圧縮したい場合、下記のコメントを外してください #compress # gzip やその他の圧縮方法を使用したい場合、下記の行をコメントアウトしてください scompresscmd /usr/bin/bzip2 uncompresscmd /usr/bin/bunzip2 # 各種の RPM パッケージでは、下記のディレクトリ内にローテーション情報を # 配置します include /etc/logrotate.d
![]() | |
|
logrotate は cron の設定ファイル
/etc/cron.daily/logrotate
内で設定され呼び出されます。
直近でどのファイルがローテーションされたのかを知るには、
/var/lib/logrotate.status
をお読みください。
logwatch はカスタマイズの可能なプラグイン型ログ監視
スクリプトです。システムログを処理して最も重要な情報だけを取り出し、
人間にとって読みやすい形式で表示します。 logwatch
コマンドを利用するには、 logwatch
パッケージを
インストールしてください。
logwatch はコマンドラインから実行することで、その時点の レポートを生成することができるほか、 cron を介して実行することで、カスタムな レポートを生成することができます。レポートは画面上に表示させることが できるほか、ファイルへの保存や特定アドレスへのメール送信を行なうことが できます。後者は特に cron での自動生成時に有用な機能です。
コマンドラインの文法は簡単な仕組みです。基本的には logwatch に続いて生成するレポートに記載するサービスの種類や時間範囲、 詳細レベルなどを指定します:
# 昨日以降のすべてのカーネルメッセージについて詳細なレポートを生成する logwatch --service kernel --detail High --range Yesterday --print # すべての sshd 関連の記録イベントについて、詳細レベルを低くしてレポートを生成する (アーカイブされたログを含む) Low detail report on all sshd events recorded (incl. archived logs) logwatch --service sshd --detail Low --range All --archives --print # 5 月 5 日から 5 月 7 日までに生成されたすべての smartd メッセージについて、 root@localhot 宛にメールでレポートを送信する logwatch --service smartd --range 'between 5/5/2005 and 5/7/2005' \ --mailto root@localhost --print
--range
オプションでは複雑な書き方をすることもできます。詳しくは
logwatch --range help
を実行してください。
また、問い合わせ可能なすべてのサービスについて一覧を表示するには、下記の
コマンドを実行します:
ls /usr/share/logwatch/default.conf/services/ | sed 's/\.conf//g'
logwatch は、かなり細かい範囲にまで設定を行なうことができます。
ですが、ほとんどの場合は既定の設定のままで十分です。既定の設定ファイルは
/usr/share/logwatch/default.conf/
にあります。この
ファイルは直接編集したりしないでください。これはパッケージに含まれるファイルで
あり、今後のソフトウエア更新で上書きされてしまう可能性があるためです。その
代わり、独自の設定ファイルを /etc/logwatch/conf/
内に
作成してお使いください (上述のファイルを雛形として使用してもかまいません) 。
logwatch のカスタマイズ方法について、手順などの HOWTO が
/usr/share/doc/packages/logwatch/HOWTO-Customize-LogWatch
内にあります。また、下記のような設定ファイルもあります:
logwatch.conf
メインの設定ファイルです。既定のバージョンは細かくコメントが書かれています。 それぞれの設定オプションは、コマンドラインから上書きすることができます。
ignore.conf
logwatch で無視されるべきすべての行を記述します。
services/*.conf
このサービスディレクトリには、レポートを生成するための各サービスに関する 設定ファイルが配置されます。
logfiles/*.conf
各サービスについて処理されるべきログファイルの仕様が書かれています。
logger はシステムログに対して、記録を行なうための
ツールです。これはシェルのコマンドインターフェイスから、 syslog(3)
システムログモジュールへのインターフェイスを提供するものです。たとえば
下記のように実行すると、 /var/log/messages
内に
それが記録されます:
logger -t Test "This messages comes from $USER"
現在のユーザ名とホスト名に依存しますが、
/var/log/messages
ファイルには下記のような行が
記録されます:
Sep 28 13:09:31 venus Test: This messages comes from tux