監視対象のファイル名が可変の場合の監視について
いつもお世話になっております。
お知恵を拝借させてください。
現在の環境
Zabbix server 2.2.8
監視対象
(監視対象 NAS)
Zabbixエージェント 2.2.7
Zabbixプロキシ 2.2.7
上記環境にて、監視対象内のあるフォルダにファイルが存在するかしないかのチェックを行おうと思っております。
(例として「/tmp/test.txt」)
そこでアイテムとして
vfs.file.exists[/tmp/test.txt]
を作成し、トリガーで
{監視対象ホスト:vfs.file.exists[/tmp/test.txt].prev(0)}>0
と設定し、「/tmp/test.txt」が存在すればアラートが発生する事を確認しました。
監視するファイル名が提携であればこれでOKなのですが、監視対象のファイル名が可変の場合は
どういったアイテムを作成するのが良いでしょうか?
よろしくお願い申し上げます。
fripper - 投稿数: 495
監視対象となるホスト毎に、対象のファイル名が異なる
かつ
1ホストあたり、対象ファイルは必ず1つ
ならば、ホストマクロが活用できると思います
ホストに対して、マクロ({$FILENAME})等を指定して
アイテム側は、マクロを利用して以下のように
>vfs.file.exists[{$FILENAME}]
トリガー側では、マクロを利用して定義したアイテムの値を条件に、以下のように
>{監視対象ホスト:vfs.file.exists[{$FILENAME}].last(0)}>0
投稿では、prev を利用されているようですが、これは「前回のチェック時に収集した値」ですので
直近のチェック結果値を利用したいならば、last を利用されるのが良いかもしれません
テンプレート化した場合、アイテムに指定するマクロ名が固定の1つになってしまうので、
ホストあたりで監視できるファイル名は1種類になってしまう点が制約ですね
マクロを複数、アイテムも複数、トリガーも複数設定‥とすれば大丈夫ですが、
マクロを利用する価値がないですね‥
-------------------------
1ホストあたりでファイル名が異なるものを複数項目監視したい‥
ホストによって監視対象にしたいファイルパスが異なる‥
ホストによっては、そもそも存在し得ないものがあって、テンプレートで全部を定義するワケにはいかない‥
といった場合だと、複数のアイテム・トリガーを、手入力で指定していかない限り、なかなか難しいと思います
naoki.i - 投稿数: 10
fripperさんへ
さっそくのご回答、ありがとうございました。
ファイルが一つの場合、マクロの利用が簡単そうですね。
(prevの件も確かにlastにすべきですね)
ただ今回、実装しようとしている内容が
1.NASサーバでウィルスチェックを行う
2.チェックした結果、感染したファイルがあった場合、隔離フォルダ/tmpにファイルを移動する
3.zabbixで隔離フォルダを監視して、ファイルが存在したらアラートを飛ばす
という事を考えておりましたので、感染したファイルが複数だった場合は難しそうですね。
ウィルスチェックソフトの動作がまだ検証中なので微妙ですが(そんな状況で、zabbixの設定をするな。。。というお話なのですが)
ウィルスチェックソフト側でログを吐き出して、そのログをzabbix側から「vfs.file.regexp[file,regexp,]」等で監視
出来ないか等考えてみます。(隔離した記録がログがあったらzabbixで検知する等)
取り急ぎ、お礼とご報告でした。
fripper - 投稿数: 495
特定ディレクトリ以下にファイルが吐かれるのでしたら‥
UserParameter を用いて、感染ファイル隔離用ディレクトリに対して
以下のようなコマンドを実行させて、その結果を監視するのは如何でしょうか?
UserPatameter
user.virus.isolation.count
find /target/directory/path -type f | wc -l
何らかのファイルが存在していれば、wc コマンドが1以上の値を返すことになるので、
user.virus.isolation.count.last(0) > 0 ならトリガー‥みたいなことができるのではないでしょうか‥
naoki.i - 投稿数: 10
勘違いをしていました。
プロキシ経由だとコマンドの実行が出来ないと思い込んでいたのですが、プロキシに関係なくUserPatameterでコマンドを呼び出すことが出来たんですね。(お恥ずかしい。。。)
・アイテムに追加
タイプ Zabbixエージェント
キー user.virus.isolation.count
データ型 数値(整数)
・トリガーに追加
{監視対象ホスト:user.virus.isolation.count.last(0)}>0
で、意図する動作が確認出来ました。
ありがとうございました。