Posted at
ZabbixDay 16

Zabbix 3.0の新機能:ログファイルから数値を取得

More than 3 years have passed since last update.

注意事項

この記事は、Zabbix 3.0が正式リリースされる前の情報ですので、正式にリリースされた際には、詳細が変更されている場合があります。ご注意ください。


はじめに

Zabbix Advent Calendar 2015の16日目です。

Zabbix 3.0では、ログファイルから正規表現を利用して数値を取得できるようになります。


これまでの課題

2.2の機能で、ログファイルやテキストファイルから正規表現で値を切り出して値を取得することができるようになりました。

例えば、アイテムのキーとして、log[]を利用し、第1引数にファイル名、第2引数に正規表現、さらに第6引数のに\1を指定すると、その正規表現に合致した文字列を取得することができます。

しかし、この機能を利用しても、ログファイルから取得した値は、ログの形式でしかZabbix上で保存することができなかったため、例えば数値を取得して、それをグラフ化するということができませんでした。

実際にlog[]を利用して数値を切り出した値を数値のアイテムとして設定して保存しようとすると、以下のようなエラーメッセージが表示されてアイテムとして登録することができませんでした。

logval-error.png

キーでlog[]を利用しているなら、保存するデータ型はログにしないといけなかったわけです。


新機能概要

Zabbix 3.0では、ログファイルから切り出した文字列を数値として保存できるようになります。

例えば、


  • アプリケーションの処理時間をログファイルに出力しているような環境

  • 簡易なセンサーなどが測定結果をログファイルに出力しているような環境

などで、そのログファイルから処理時間や温度など必要な数値のみを取り出し、その数値を比較したトリガーを作成したり値をグラフ化することできます。


設定例


例1

例えば、以下のようなフォーマットで処理時間がファイルに出力される環境があったとします。


sample.log

2015/12/08 12:34:56 Web: 2.3sec/AP: 1.2sec/Total: 5.5sec

2015/12/08 12:35:56 Web: 2.2sec/AP: 1.1sec/Total: 4.5sec
2015/12/08 12:36:56 Web: 3.1sec/AP: 2.1sec/Total: 5.8sec

このログファイルから以下のような正規表現を利用してTotalの時間の部分のみ切り出します。

Total: ([0-9]+|[0-9]+\.[0-9]*)sec

アイテムのキーとしては以下のような設定になります。

log[/tmp/sample.log,"Total: ([0-9]+|[0-9]+\.[0-9]*)sec",,,,\1]

アイテムのデータ型としては、今回の例であれば小数点を持った数値なので、「数値(浮動小数)」を選択して保存します。

そうすると、通常の数値のアイテムと同様にグラフを作成することができますし、トリガーを設定して一定以上の秒数以上になったらアクションを実行するというようなことができます。


まとめ

2.4で追加されたログファイルから値を切り出す機能が改善され、数値として取り込めるようになり、新たな仕組みやシステムを構築しなくても、数値としてZabbixで監視することができます。

ログファイルから切り出した文字列の数値化に困っていた方は正規表現とoutputパラメータを活用してみてはいかがでしょうか?


おまけ

Zabbix 2.2からできていたことですが、使っていない方もいらっしゃるかと思うので、今度は、vfs.file.regexp[]を使ってみましょう。

Linuxをよく利用されている方は、/procディレクトリ以下に、カーネルに関する様々なステータス情報が保存されていることをご存知かと思います。

そこで、/proc/meminfoを参照して特定の値を切り出してみましょう。

ファイルの中を見てみるとこんな感じです。


/proc/meminfo

MemTotal:        1870520 kB

MemFree: 458368 kB
MemAvailable: 1141804 kB
Buffers: 764 kB
Cached: 777352 kB
SwapCached: 0 kB
Active: 949624 kB
Inactive: 248908 kB
Active(anon): 420768 kB
Inactive(anon): 10560 kB
Active(file): 528856 kB
Inactive(file): 238348 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2097148 kB
SwapFree: 2097148 kB
Dirty: 8 kB
Writeback: 0 kB

そこで今回は、「MemAvailable」の値を取得してみましょう。

キーは以下のようになります。

vfs.file.regexp[/proc/meminfo,"MemAvailable: *([0-9]+) kB",,,,\1]

単位がkBなので、乗数をかけてB単位にすれば、グラフなどでの単位自動変換にも対応できます。


参考

Zabbix 3.0マニュアル : 5.11.2 Graphing log items

次はusiusi360さんですね。

よろしくお願いします。