こちら で LogSurfer について紹介していますが、今回はこのインストール+簡単な設定方法を説明します。確認したのが Linux の Ubuntu 12.04 と CentOS 6系ですが、コンパイルしてインストールしている為、Unix 系サーバであれば通常は同じ手順でインストールができると考えられます。
まず Ubuntu と CentOS への LogSurfer のインストール方法について説明し、設定方法も説明します。参考リンクは以下になります。
- [LogSurfer の公式ページ]
- [LogSurfer のダウンロード(最新版はこちらから)]
tar.gz をダウンロードし解凍する
最初は LogSurfer をインストールします。tar.gz 形式の LogSurfer をダウンロード・コンパイルしてインストールします。
まずは LogSurfer のダウンロードと解凍です。
$ cd /usr/local/src # tar.gz をダウンロードする場所
$ sudo wget http://www.crypt.gen.nz/logsurfer/logsurfer-1.8.tar.gz # 今回の利用バージョンは 1.8
$ sudo tar zxvf logsurfer-1.8.tar.gz
configure・make・make install する
次にコンパイルでよくある configure・make・make install です。
LogSurfer のデフォルトインストール先は /usr/local ですが、例えばコンフィグファイルのディレクトリを /etc/logsurfer.d(LogSurfer はプロセス単位で設定ファイルが存在)にしたい場合は -with-etcdir=/etc/logsurfer.d を configure オプションに指定します。
また、/opt/logsurfer-1.8 にインストールしたい場合は -prefix=/opt/logsurfer-1.8 に指定します。以下はこれらのオプションを指定した例です。デフォルトのインストール先を利用したい場合はオプション無しで configure を実行して下さい。
また、-prefix を変更した場合は事前にいくつかのディレクトリを作成しておく必要があります。/opt/logsurfer-1.8 を -prefix に指定した場合は次のコマンドを実行します。
$ sudo mkdir -p /opt/logsurfer-1.8/bin/
$ sudo mkdir -p /opt/logsurfer-1.8/man/man1
$ sudo mkdir -p /opt/logsurfer-1.8/man/man4
$ sudo mkdir -p /opt/logsurfer-1.8/src/
$ sudo mkdir -p /etc/logsurfer.d/ # --with-etcdir で指定した場所
/usr/local/src(デフォルト)にインストールする場合も以下のコマンドでディレクトリを作成しておく必要があります。
$ sudo mkdir -p /usr/local/man/man1
$ sudo mkdir -p /usr/local/man/man4
次に condigure・make・make install を行います。
$ sudo ./configure --prefix=/opt/logsurfer-1.8 --with-etcdir=/etc/logsurfer.d
$ sudo make
$ sudo make install
設定ファイルを作る
続いて LogSurfer の設定ファイルを作ります。私は今回 /etc/logsurfer.d を設定ファイルのディレクトリに指定しましたが、-with-etcdir に何も指定しなかった場合、通常は /usr/local/etc/logsurfer/etc になります(ファイル名は後述)。
また、LogSurfer は監視するログ1つにつき1プロセス起動する必要があります。例えば、LogSurfer をコマンドから起動する場合、次のようなコマンドを実行します。
$ logsurfer -c /etc/logsurfer.d/syslog.conf -F /var/log/syslog
上の例は -c で読み込む設定ファイルを、-F オプションで監視するログファイルを指定しています。設定ファイル名は何でも構いません。
複数のログファイルを監視したい場合は複数の LogSurfer プロセスを起動する必要があります。今回は上のように syslog(CentOS の場合は /var/log/messages)を監視したい為、設定ファイルも似たような名前(任意)をつけています。次にこの設定ファイルを作成します。
$ sudo vi /etc/logsurfer.d/syslog.conf
syslog.conf の中身は以下のように設定します。
'[eE]rror' - - - 0<br /> open "$1" - 0 0 300<br /> pipe "/usr/bin/mail -s "logsurfer : syslog Error occured" <mail address>"
1行目は監視ファイルのアクションを起こすときの条件を指定しています。これは左から順に “match_regex not_match_regex stop_regex not_stop_regex timeout [continue] action” のようにスペース区切りで設定します。ここでは “Error” という文字列が /var/log/syslog に存在していた時に次の行のアクションを行うことを意味しています。
2行目は open というアクションを使っていますが、これはコンテキスト(状態)を作るアクションです。1行目でマッチした正規表現($1 で表現)を状態の ID として利用し 300秒間隔で次のアクションを行うことを意味します。
最後の pipe アクションですが、これは前の行の標準入力をコマンドへ流すアクションです。この場合、標準入力にはマッチした行が入ってくるのですが、この行を /usr/bin/mail コマンドへ渡しています。
この設定ができたら LogSurfer を起動しましょう。
$ logsurfer -c /etc/logsurfer.d/syslog.conf -F /var/log/syslog
これで監視が始まりました。
LogSurfer は swatch 等と比べ、コンテキストの概念があることから同じエラーが大量に発生した場合の処理等をうまく扱うことができます。ただ、(swatch 同様)1つの設定ファイルにつき 1つの監視ファイルになる為、複数のファイルを監視した場合やサービスとして稼働したい場合などは自分でシェルを作成する必要が出てきます。
デーモンとして稼働する(Ubuntu)
この他、この LogSurfer をデーモンとして /etc/init.d に登録したい人もいると思います。Ubuntu だけですが、私の方で LogSurfer 向けの /etc/init.d に置く起動スクリプトを作成している為、それを使う方法も紹介します。
この方法は sudo service logsurfer start というコマンドを実行し /etc/logsurfer.d/ 配下の *\*.conf ファイルをそれぞれの LogSurfer プロセスで実行するものです。3つの **.conf ファイルがあれば LogSurfer のプロセスは 3つ起動します。
設定方法としては以下のようなコマンドを実行します。
$ cd /etc/init.d/
$ sudo wget https://gist.github.com/stateya/5643928/raw/1b4c83a0f4084d0f7886d674383bb0fcf45573c6/logsurfer
$ sudo chmod 755 logsurfer
$ sudo update-rc.d logsurfer defaults
ここで logsurfer ファイルをエディタで開き、DAEMON と CONFIG_PATH を自分の環境に合わせて変更する必要があります。
この後、logsurfer を起動します。
$ sudo service logsurfer start
これで LogSurfer が起動するようになります。
: http://www.crypt.gen.nz/logsurfer/ : http://www.crypt.gen.nz/logsurfer/#download