zabbix アイテムのキーの正規表現について
・環境情報
--------------------------------------------------------------------------------------------------------------
CentOS Linux release 7.5.1804
Zabbix 3.0.9
--------------------------------------------------------------------------------------------------------------
・やっていること
---------------------------------------------------------------------------------------------------------------
syslogサーバーにルーターとストレージのログを収集し、
そこに "error", "warning", "infomaation"のメッセージが含まれていれば、
zabbixサーバーに連携し、メッセージを検知するという仕組みを構築中です。
---------------------------------------------------------------------------------------------------------------
・事象
--------------------------------------------------------------------------------------------------------------
アイテムのキーの欄で、
log["/var/log/network/192.168.100.254/messages_20180711.log",@messages]
※@messagesには正規表現で "info|warn|error|INFO|WARN|ERROR" が入っています。
と入力すると、アイテムの取得が行われ、メッセージの検知ができます。
しかしこれでは一回一回手動でログの日付部分を変更しなくてはいけないため、
キーの欄を以下のようにしました。
log["/var/log/network/192.168.100.254/messages(.*).log",@messages]
しかし、これに変更したところzabbix_agentd.logにて以下のメッセージが
出て、zabbixのGUI上ではアイテム取得不可になってしまいました。
11401:20180711:094808.524 active check "log["/var/log/network/192.168.100.254/messages_2018071[0-9].log",@messages]" is not supported: Cannot obtain information for file "/var/log/network/192.168.100.254/messages_2018071[0-9].log": [2] No such file or directory
--------------------------------------------------------------------------------------------------------------
そこで以下のことについてご教授いただきたいです。
・質問事項
--------------------------------------------------------------------------------------------------------------
アイテムのキー欄では正規表現が使えないのでしょうか。
私は以下のフォーラムで、アイテムのキー欄での正規表現が使える認識だったのですが。
http://www.zabbix.jp/node/2254
それとも正規表現に間違いがあるのでしょうか。
--------------------------------------------------------------------------------------------------------------
ご教授願います。
TNK - 投稿数: 4734
log[]ではファイル名の部分に正規表現は使用できなかったはずです。
logrt[]であれば使用できます。
https://www.zabbix.com/documentation/3.0/manual/config/items/itemtypes/z...
yaginu - 投稿数: 3
TNKさん
コメントありがとうございます。
log[] を logrt[] に変更し、正規表現が認識され、zabbix上に検知されることを確認できました。
助かりました。ありがとうございます。
heya - 投稿数: 319
ついでに、ファイル名のパターン指定について。
logrt でパターンが使えるのはファイル名部分だけ、つまり最後の / より後だけです。
/var/log/network/192.168.100.254/messages(.*).log
だと、ファイル名に「messages の後に0文字以上の何かがあって、さらに何か一文字あって、その後に log が続く」というパターンを“含む”ファイルにマッチします。この場合、極端な例だと ABCmessagesXYZlog123 というファイル名でもマッチしてしまいます(実際はそんなファイルは作られないでしょうが、 .messages.log.swp みたいなのだとひょっとしたらあるかもしれません)。
おそらく、実際にやりたいのはこういうことだろうと思います。
/var/log/network/192.168.100.254/^messages.*\.log$
・^ と $ をつけることで、前後に余計なものがつくファイル名にはマッチしないようにする。
(/ の後に ^ というのが少々違和感がありますが、そういうものだと割り切ってください)
・() は特に意味がないので外す。
・. は任意の一文字なので、. という文字そのものにしたいなら \ でエスケープする。
http://www.zabbix.jp/node/2254 は、フォーラムに書き込むときに log と logrt を書き間違えただけじゃないかなと想像します。
yaginu - 投稿数: 3
heyaさん
コメントありがとうございます。
>logrt でパターンが使えるのはファイル名部分だけ、つまり最後の / より後だけです。
> /var/log/network/192.168.100.254/messages(.*).log
>だと、ファイル名に「messages の後に0文字以上の何かがあって、さらに何か一文字あって、その後に log が続く」というパターンを“含む”ファイルにマッチします。この場合、極端な例だと ABCmessagesXYZlog123 というファイル名でもマッチしてしまいます(実際はそんなファイルは作られないでしょうが、 .messages.log.swp みたいなのだとひょっとしたらあるかもしれません)。
ご察しの通りでございます。
実際のところ圧縮された、messages_20180711.log.gz のようなファイルも存在するので、
ご教授いただいた、正規表現 ^messages.*\.log$ を入れてみました。
正規表現が認識され、zabbix上に検知されることを確認できました。
助かりました。ありがとうございます。