
第4回 サーバのログ監視ツールを使いこなそう
浅野史彦、小川典嗣
アイティーブースト(http://www.itboost.co.jp/)
2002/11/12
swatchによるログの常時監視
ログを監視して、特定の文字列が出力されると管理者へ知らせるツールとして「swatch」があります。syslogdのマニュアルには「異常なログをメールで送信するようでは手遅れである」と書かれていますが、実際問題としては対応が遅れることになってもメールで異常を確認できる方が良い環境もあると思われます。
また、ログをリアルタイムで監視しているため、不正アクセスされてローカルのログの改ざんが行われた際も、swatchが起動していれば必要な情報を転送しておくことなどが可能です。このように、swatchを使えばセキュリティと運用面で有効な仕組みを作ることができます。
■swatchのインストール
swatchの最新のバージョンは3.0.4です(2002年11月2日現在)。http://www.oit.ucsb.edu/~eta/swatch/からswatch-3.0.4.tar.gzファイルをダウンロードします。
http://www.oit.ucsb.edu/~eta/swatch/swatch-3.0.4.tar.gz
また、swatchはPerlで記述されたプログラムであり、Perl5(注)のほかに、
- Date::Calc
- Date::Parse
- File::Tail
- Time::HiRes
の4つのモジュールが必要です。CPANのサイト(Perlのフリーモジュールがダウンロードできる)http://search.cpan.org/から上記の4モジュールをダウンロードします。上記サイトにアクセスすると、トップページが検索画面になっています。各モジュールを検索してダウンロードします。
| 注:Perl(Perl5)はすでにインストール済みという前提で進めます。 |
2002年11月現在の最新モジュールファイルは以下になります。
http://search.cpan.org/CPAN/authors/id/S/ST/STBEY/Date-Calc-5.3.tar.gz
http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/TimeDate-1.1301.tar.gz
http://search.cpan.org/CPAN/authors/id/M/MG/MGRABNAR/File-Tail-0.98.tar.gz
http://search.cpan.org/CPAN/authors/id/J/JH/JHI/Time-HiRes-1.37.tar.gz
wgetあるいはWebブラウザを利用してダウンロードしましょう。
ではインストールです。各Perlモジュールのインストール方法は同じです。ここでは、ダウンロードしたファイルを保存したディレクトリを$SOURCEとし、Date::Calcを例に説明します。
$ tar zxvf $SOURCE/Date-calc-5.3.tar.gz |
| 注:make testで正常にコンパイルが完了していることを確認します。 |
4つのモジュールをインストールしたら、swatchをインストールします。
$ tar zxvf $SOURCE/swatch-3.0.4.tar.gz |
| 注:make testで正常にコンパイルが完了していることを確認します。 |
■swatchの設定
swatchの設定ファイルは、デフォルトでは~/.swatchrcです。swatchには設定ファイルのサンプルが含まれているので、このサンプルファイルを規定のディレクトリにコピーしてひな型ファイルとして利用します。
なお、サンプルファイルには、
- $SOURCE/swatch-3.0.4/examples/swatchrc.monitor
- $SOURCE/swatch-3.0.4/examples/swatchrc.personal
の2種類があります。
swatchrc.monitorには、サーバへの不正アクセスやハードの発熱、システムのクラッシュや停止、再起動の監視を行うためのサンプル設定が記述されています。
swatchrc.personalでは、swatchrc.monitorの内容に加えて、特定プログラムの実行監視とそれ以外のすべてのログをコンソール上に表示する設定が行われています。swatchrc.monitorの内容はおおむねswatchrc.personalにも設定されているため、swatchrc.personalをコピーして編集します。これをホームディレクトリ(注)に「.swatchrc」としてコピーします。
# cp $SOURCE/swatch-3.0.4/examples/swatchrc.personal ~/.swatchrc |
| 注:/var/log/ディレクトリ内のログファイルの多くは、root権限でなければ読み込めません。一般ユーザーでもswatchを実行することは可能ですが、監視対象のログファイルに読み取り権限が必要です。ここでは、rootユーザーでswatchを実行しています。 |
設定ファイルで指示する内容は、監視する文字列および文字列発見時の処理方法です。上から下へ、記述された「パターン」にマッチしているかどうかを順番にチェックしていきます。パターンにマッチすると、それに対応する「アクション」を実行して終了します。
設定ファイルの書式は以下のようになります。
watchfor /パターン/ |
- パターン
監視したい文字列を、watchforの後に「/」で挟んで記述します。
ここで記述するパターンにはPerlの正規表現を使用することができます。swatchで一般的に使用される正規表現として、「faile|error」などのように「|」で区切ってfaileかerrorをマッチさせるパターン、「[Ll]inux」のように記述してLinuxとlinuxの両方にマッチさせるパターン、任意の1文字を表す「.」を「a.c」のように文字間に記述してaで始まりcで終わる3文字の文字列にマッチさせるパターンがあります。「/faile/,/error/」のように区切ることで、複数のパターンを指定することもできます。パターンの最後に「/faile/i」のように「i」を付ければ、パターンの大文字小文字を区別しなくなります。
また、watchforの代わりにignoreを指定して、特定の文字列を含む行を無視させることも可能です。なお、ignoreはwatchforより上に記述します。
- アクション
アクションには、パターンがマッチした場合の処理を記述します。指定できるアクションには、以下のようなものがあります。
アクション説明echo [modes] ターミナルにメッセージを表示。modesにより表示形式を変更可能 bell [N] beep音をN回鳴らす。数字を指定しなければ1回 exec command 指定したコマンドを実行する。コマンドの引数として「$0」を指定すると、表示されるログそのものを意味する。「$N」は、N番目のフィールドの文字列を意味する mail [=address:address:…][,subject=your_text_here] 指定されたアドレスにメールを送信する。メールは複数指定できるほか、サブジェクトの指定が可能。アドレスを指定しなければswatchを起動したユーザーに送信される pipe command[,keep_open] パイプでコマンドに結果を渡す。keep_openを指定すると異なるパイプが実行されるか、swatchが終了するまでパイプが実行されたままになる write [user:user:…] swatchを実行しているサーバにログインしているユーザーに、writeコマンドを使用して結果を送信する throttle hours:minutes:seconds,[use=message|regex] 一度検出されたパターンが再度検出された場合、検出を抑えることができる。標準では「use=messges」が指定されており、同じmessagesは検出されない。「use=regex」を指定すると、同じ正規表現の場合は検出されない continue 通常は、マッチするパターンが検出されると指定されたアクションが実行されて終了するが、continueが指定されている場合はさらにマッチするパターンの検出が行われる quit マッチするパターンを検出するとswatchが終了する 表1 アクションの種類と機能
echoのmodesには、以下のようなものを指定できます。
modes説明normal 通常の表示 bold 太字で表示 underscore 下線で表示 blink 点滅で表示 inverse 反転して表示 [color] black、red、green、yellow、blue、magenta、cyan、whiteの色で表示 [color_h] black_、red_h、green_h、yellow_h、blue_h、magenta_h、cyan_h、white_hの色で反転 random 上記のものをランダムに使用 表2 echoに指定できるmodes
注:コンソールによっては、表示形式が正常に反映されないものがあります。
swatchrc.personalをコピーした.swatchrcを基に、設定ファイルを作成します。もちろん、使用するプログラムやディストリビューションによって出力されるログは異なりますし、監視すべき内容も変わってきます。ここでは設定例を挙げてみます。
#login |
| 注:一部Red Hat Linux専用の記述があります。 |
■swatchの起動
swatchの設定が終了したら、swatchを実行します。バックグラウンドで動作させるために、「&」を引数に実行します。
# swatch & |
sshやtelnetなどで、わざと認証に失敗してみましょう。メッセージがコンソールに表示されるのが確認できます。
今回のように、特にオプションを指定しない場合は、
swatch --config-file=~/.swatchrc --tail-file=/var/log/messages |
のようなオプション指定で実行され、/var/log/messagesファイルを監視します。/var/log/messagesファイルが存在しない場合は、
swatch --config-file=~/.swatchrc --tail-file=/var/log/syslog |
が実行されてmessagesの代わりに/var/log/syslogを監視します。
これらのオプションの詳細は、表3を参照してください。
|
オプション
|
別オプション
|
説明
|
|
swatchの制御
|
||
| --config-file=filename | -c filename | 設定ファイルを指定。デフォルトでは${HOME]}/.swatchrc |
| --help | swatchの情報を表示 | |
| --input-record-separator=regular_expression | 改行コードの指定。デフォルトはCR | |
| --restart-time=[+]hh:mm[am|pm} | -r [+]hh:mm[am|pm] | swatchを再起動する時間をhh:mmで指定する。am/pmを指定しなければ24時間制とみなされる。+を指定した場合は、現在から指定した時間が経過した後に再起動される |
| --script-dir=/path/to/directory | swatchを起動するとスクリプトファイルが作成される。この際の作成場所を指定。誰もが書き込める/tmpディレクトリなどを指定してはならない | |
| --version | -V | バージョンを表示する |
|
対象ファイルの設定
|
||
| --tail-file=filename | -t filename | 監視対象となるログのファイル名を指定 |
| --read-pipe=command | -p command | コマンドの実行結果をswatchにパイプする |
| --examine=filename | -f filename | 設定ファイルに適合する内容をスキャンする。ファイルの最後まで確認をすると終了する |
|
そのほか
|
||
| --dump-script[=filename] | デバッグ用のオプション。swatchスクリプトを実行する代わりに、指定したファイルを標準出力に書き出す | |
| 表3 swatchのオプション | ||
一般的なswatchの使用方法は、
# swatch -c [設定ファイル] -t[ログファイル] |
です。
ログファイルはmessagesファイルだけではなく、テキストファイルとして読み出せるものであればどのファイルでも指定できます。複数のログファイルを異なる内容で監視したい場合は、swatchを複数起動します。オプションの指定を変更して、swatchを複数回実行しましょう。
~/swatchrcが存在しない状態で、オプションで設定ファイルを指定しなかった場合は、
watchfor /.*/ |
の内容で実行されます。「.*」は、正規表現において「任意の文字が1文字以上連続すること」を意味します。よって、あらゆる行をランダムな形式で表示します。
システムの起動時にswatchを自動起動させたい場合は、/etc/rc.localなどに以下の行を追記します。
swatch -c /root/.swatchrc -t /var/log/messages & |
|
2/3
|
|
||||||
|
||||||
| 連載 Linux管理者への道 |
| Linux Squareフォーラム Linux/システム学習関連記事 |
| 連載:Windowsユーザーに教えるLinuxの常識(全12回) Windowsのセオリーが通用しないLinux。Linux初心者向けに、LinuxというOSの考え方/常識をゼロから伝授! |
|
| 連載:LFSで作って学ぶLinuxの仕組み(全4回) 管理者(root)は、何をしなければならないのか? 管理に際して検討すべきことは? 管理のための技術とは? など、駆け出し管理者のための考え方や方法論を検討する |
|
| 連載:Linux管理者への道(全8回) 「Linux From Scratch」というシンプルなLinuxをインストール&環境構築する作業を通して、LinuxがOSとして機能するための仕組みや設定を見直そう |
|
| Linux Squareフォーラム全記事インデックス |
|
ホワイトペーパー(TechTargetジャパン)
- natテーブルを利用したLinuxルータの作成・2 (2010/3/11)
IPパケットのディスティネーションアドレスを書き換える「DNAT」を使って、透過型プロキシを構築します - 一歩進んだ監視のカスタマイズ (2010/3/3)
スクリプトの実行結果などを取得できるユーザーパラメータを用いて、自分のニーズにぴったり合った監視を実現 - OSSライセンス順守の第一歩 (2010/2/18)
企業として、OSSライセンス違反を犯さないためには、どのような手順が必要か、いくつかアドバイスします - 無視できないフラグメンテーション問題への解答は? (2010/2/10)
今回は、メモリコンパクション、そしてメモリバリアを発行するシステムコールという2つのパッチについて深く紹介します
|
|
- PowerShell 2.0で始めるWindowsシステム管理
- natテーブルを利用したLinuxルータの作成・2
- ERPの“事業仕訳け”でIT予算をもっと有効に!
- 調査の難しい「OutOfMemoryError」事例、5選
- 組み込みシステム開発における“モデル”とは?
- 西和彦、ビル・ゲイツに会う
- 「事業仕分け」「修正予算」って何?国家予算の全体像
- IT業界職種カタログ(8)ITエデュケーション
- .NET TIPS - .NET開発のテクニックとヒント集 -
- Hyper-Vライブ・マイグレーションの運用ノウハウ
- 構造体の便利な用途、インターフェイス入門
- 3人中2人が間違える!? 片持ちばりの計算をしよう
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 New! |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜Java編〜
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |

| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |

| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |
| ◆ | 直属上司が海外にいるのエンジニアに見る 【実例】場所に捉われないワークスタイル |

| ◆ | 「仮想化工房」のマイスターが選んだのは VMware、Hyper-V、そしてVirtageだった! |
| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |






