3. ログ監視 - logrt[]
ログファイルや、プログラムが作成するファイルの中のデータを監視する際、ファイル名が必ずしても一定でない場合があります。
キーlogrtは、ファイル名の部分を正規表現で指定し、複数のファイルをチェック対象とすることができます。
logとlogrtの違い
こちらがlog
こちらがlogrt
違いは、ファイル名を指定する最初のパラメータのみです。
log ファイルのパスと、ファイル名(監視対象は1ファイルのみ)
logrt ファイルのパスと、対象ファイルを指定する正規表現(監視対象は複数ファイル)
logrtが必要なケース
通常のログファイルは、一定期間毎にファイルがローテーションされ、データが追記されるのはメインのファイル1つ、という例が大半だと思います。
ただ、アプリケーションの中には、日付の付いたログファイルを作ったり、ファイル名にランダムな番号をつけてデータを生成するようなプログラムもあります。
今回は、以下のようなログファイルをサンプルとして作成し、どのファイルを更新しても、監視データと取り込めることを確認します。
appliance@zabbix:/tmp/log$ ls -l total 12 -rw-rw-r-- 1 appliance appliance 4 Feb 10 13:30 logfile.2018-02-10 -rw-rw-r-- 1 appliance appliance 4 Feb 11 06:21 logfile.2018-02-11 -rw-rw-r-- 1 appliance appliance 4 Feb 15 20:44 logfile.2018-02-15
動作確認
日付つきのログファイルを監視対象とするため、logrtを以下のように設定します。
ファイル名を指定するための正規表現
/tmp/log/^logfile.\d{4}-\d{2}-\d{2}$
上記のファイルに、順番に監視対象となる文字列を設定します。
$ echo error11 >> logfile.2018-02-11 $ echo error15 >> logfile.2018-02-15 $ echo error10 >> logfile.2018-02-10
ログデータの生成順に、複数のファイルから監視データを取り込むことができています。
注意点
正規表現の指定は、あくまでもファイル名のみです。フォルダ/ディレクトリ名は固定です(マニュアルを読めば、きちんとそう書いていますが、私はよく読まずにフォルダ名にも正規表現が使えると勘違いし、しばらく試行錯誤したことがあります・・・)。
” logrtの正規表現はファイル名でのみサポートされており、ディレクトリの正規表現でのマッチングはサポートされていません。”
引用元 6 ログファイル監視 [Zabbix Documentation 2.2]