Swatchによるリアルタイムログ監視システムを構築する【前編】

Swatchを用いたログ監視システムの構築(前編)

はじめに

Swatchは、Simple Watcherの名前が示すように、シンプルなリアルタイムログ監視ツールです。Swatchでは、指定した条件にマッチしたログを強調表示したり、コマンド実行などのさまざまなアクションを取ることが可能です。本記事では、Swatchのインストールから本番運用までのシステム構築方法を前編、後編の2回に分けて解説します。今回は、Swatchのインストールから、基本的な使い方について解説します。

前提条件

構築に必要なサーバー要件および、導入パッケージは下記のとおりです。

  1. サーバー要件

    サーバー要件は、次のとおりです。

    ホスト名centos
    IPアドレス192.168.0.20
    OSCentOS 6.5 i386
    サードパーティリポジトリEPEL
  2. 導入するパッケージ

    導入するパッケージは、次のとおりです。

    パッケージ名バージョン
    mutt1.5.20
    mailx12.4
    swatch3.2.3

インストール

必要なパッケージをインストールします。

  1. メール関連パッケージのインストール
    $ sudo yum -y install mutt mailx
    
    [vagrant@centos ~]$ sudo yum -y install mutt mailx
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    Including mirror: ftp.jaist.ac.jp
    Including mirror: ftp.tsukuba.wide.ad.jp
    Including mirror: ftp.riken.jp
    Including mirror: ftp.nara.wide.ad.jp
    Including mirror: ftp.iij.ad.jp
    Including mirror: www.ftp.ne.jp
    Including mirror: mirror.fairway.ne.jp
     * base: ftp.jaist.ac.jp
    Including mirror: ftp.jaist.ac.jp
    Including mirror: ftp.tsukuba.wide.ad.jp
    Including mirror: ftp.riken.jp
    Including mirror: ftp.nara.wide.ad.jp
    Including mirror: ftp.iij.ad.jp
    Including mirror: www.ftp.ne.jp
    Including mirror: mirror.fairway.ne.jp
     * extras: ftp.jaist.ac.jp
     * updates: centos.ustc.edu.cn
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package mailx.i686 0:12.4-7.el6 will be installed
    ---> Package mutt.i686 5:1.5.20-2.20091214hg736b6a.el6_1.1 will be installed
    --> Processing Dependency: urlview for package: 5:mutt-1.5.20-2.20091214hg736b6a.el6_1.1.i686
    --> Processing Dependency: libtokyocabinet.so.8 for package: 5:mutt-1.5.20-2.20091214hg736b6a.el6_1.1.i686
    
  2. Swatchのインストール
    $ sudo yum --enablerepo=epel -y install swatch
    
    [vagrant@centos ~]$ sudo yum --enablerepo=epel -y install swatch
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    epel/metalink                                            | 6.1 kB     00:00
    Including mirror: ftp.jaist.ac.jp
    Including mirror: ftp.tsukuba.wide.ad.jp
    Including mirror: ftp.riken.jp
    Including mirror: ftp.nara.wide.ad.jp
    Including mirror: ftp.iij.ad.jp
    Including mirror: www.ftp.ne.jp
    Including mirror: mirror.fairway.ne.jp
     * base: ftp.jaist.ac.jp
    Including mirror: ftp.jaist.ac.jp
    Including mirror: ftp.tsukuba.wide.ad.jp
    Including mirror: ftp.iij.ad.jp
     * epel: ftp.jaist.ac.jp
    Including mirror: ftp.jaist.ac.jp
    Including mirror: ftp.tsukuba.wide.ad.jp
    Including mirror: ftp.riken.jp
    Including mirror: ftp.nara.wide.ad.jp
    Including mirror: ftp.iij.ad.jp
    Including mirror: www.ftp.ne.jp
    Including mirror: mirror.fairway.ne.jp
     * extras: ftp.jaist.ac.jp
     * updates: centos.ustc.edu.cn
    epel                                                     | 4.2 kB     00:00
    epel/primary_db                                          | 4.9 MB     00:01
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    

使用方法

Swatchの基本的な使用方法を解説します。

  1. Swatchの構文

    Swatchの構文は、次のとおりです。

    watchfor 検索パターン
      アクション1
      アクション2
      アクション3
           :
    

    検索パターンには、正規表現を利用することができます。
    構文を設定ファイルに複数記述することで、さまざまなアクションを実行できます。

    主に使われるアクションは、下記のとおりです。

    アクション内容
    echo検索パターンにマッチした行を表示する。色指定も可能です。
    mail検索パターンにマッチした行をメール通知する。
    pipe検索パターンにマッチした行をパイプを通して外部コマンドに渡します。
    threshold連続してマッチした行の表示を指定回数になるまで表示しません。
    throttle連続してマッチした行の検出を一定時間抑止します。

    以降では、それぞれのアクションの例を解説します。
    なお、設定ファイルは、swatch.confとします。

  2. echoアクション

    マッチした行を表示します。

    設定ファイルを下記のとおり編集します。
    例では、su:にマッチした行を赤色で表示し、それ以外の行を標準色で表示します。
    なお、watchfor /.*/の行とアクションを削除すると、マッチした行しか表示されません。

    $ vi swatch.conf
    
    watchfor   /su:/
      echo red
    watchfor   /.*/
      echo
    
    4007-05

    テストファイルを作成します。

    $ vi test1.log
    
    su: pam_unix
    test
    
    4007-06

    テストモードで実行します。

    $ swatch -c swatch.conf -f test1.log
    
    4007-07
  3. mailアクション

    マッチした行を、件名と送信先を指定してメールします。
    例では、ALERT suという件名のメールをvagrantユーザーに送信します。

    watchfor   /su:/
      echo red
      mail addresses=vagrant,subject="ALERT su"
    
    4007-08

    テストモードで実行します。

    $ swatch -c swatch.conf -f test1.log
    
    4007-09 4007-10 4007-11
  4. pipeアクション

    マッチした行を、パイプを使って外部コマンドに渡します。
    外部コマンドは、標準入力から渡された行を読み込みます。
    例では、echo.shコマンドを実行して表示を変更しています。

    watchfor   /su:/
      pipe "./echo.sh"
      mail addresses=vagrant,subject="ALERT su"
    watchfor   /.*/
      echo
    
    4007-12

    外部コマンドを、下記のとおり作成します。

    $ vi echo.sh
    
    #!/bin/sh
    
    read BUFFER
    cat<<EOF
    ##########
    $BUFFER
    ##########
    EOF
    
    4007-13

    コマンドに実行権を付与します。

    $ chmod 0700 echo.sh
    

    テストモードで実行します。

    $ swatch -c swatch.conf -f test1.log
    
    4007-14
  5. thresholdアクション

    マッチした行が指定された回数出現した時に処理を行い、その後指定された時間検出を抑止します。
    例では、reportにマッチした行が2回になった時点で行を出力し、その後1秒間検出を抑止します。
    抑止が解除されると、検索が続行されます。

    watchfor   /repeat/
      echo
      threshold track_by=/repeat/, type=both, count=2, seconds=1
    
    4007-15

    テストファイルを作成します。

    $ vi test2.log
    
    test
    repeat 1
    2 repeat
    repeat
    repeat
    repeat
    repeat
    repeat
    
    4007-16

    テストモードで実行します。

    $ swatch -c swatch.conf -f test2.log
    
    4007-18
  6. throttleアクション

    マッチした行が指定された回数出現した時に処理を行い、その後指定された時間検出を抑止します。
    例では、1回目にreportにマッチした行を出力し、その後1秒間検出を抑止します。

    watchfor   /repeat/
      echo
      throttle 00:00:01, key=/repeat/
    
    4007-19

    テストモードで実行します。

    $ swatch -c swatch.conf -f test2.log
    
    4007-20

    インストールしたSwatchのバージョンでは、throttleは使用しないで、thresholdを使用することが推奨されています。

    上記と同様のアクションは、下記のとおり記述できます。

    watchfor   /repeat/
      echo
      threshold track_by=/repeat/, type=limit, count=1, seconds=1
    
    4007-21
    [vagrant@centos ~]$ swatch -c swatch.conf -f test2.log
    
    *** swatch version 3.2.3 (pid:18901) started at 2014年  2月  6日 木曜日 10:20:00 JST
    
    test
    repeat 1
    
    
    [vagrant@centos ~]$ sudo /etc/rc.d/init.d/swatch start
    Starting swatch
    

まとめ

ここまで、Swatchのインストールと基本的な使い方について解説しました。後編では、本番運用のための設定について解説します。

コメントを残す

メールアドレスが公開されることはありません。