ActiveCheck(WindowsEventLog)のZabbix-Server動作について

いつもお世話になっております。
早速ですが、ご存知でしたらご教示ください。

※長文失礼いたします。

〇確認したい内容
Zabbix-ServerにおけるActiveCheck(WindowsEventLog)の際に、
Agentの特定はagentd.confのHostnameのみを参照しているのでしょうか?

また、Agentから送信されるイベント情報はServerでどのように管理されて
「更新されたもの」or「新規にすべてを読み込む対象」と判断しているのでしょうか?

〇使用環境
(server=CentOS 7.2.1511)
# zabbix_server -V
zabbix_server (Zabbix) 3.0.2
Revision 59540 20 April 2016, compilation time: Apr 20 2016 14:37:38

(client=WindowsServer2012)
> C:\zabbix\bin\win64\zabbix_agentd.exe -V
zabbix_agentd Win64 (service) (Zabbix) 3.0.0
Revision 58455 15 February 2016, compilation time: Feb 15 2016 14:20:25

〇確認したい背景
①ある仮想環境で、既に監視状態のZabbix-Agentサーバの仮想サーバクローンを作成しました。
②Zabbix-Serverのホスト設定では、オリジナルAgent(暗号化なし)で登録されています。
③また、オリジナルAgentに対するActiveCheck(WindowsEventLog)アイテムが設定され、
 全て読み込まれている状態です。
③クローンAgentではIPアドレスのみ変更しましたが、クローンAgentのagentd.confは
 オリジナルAgentのまま(Hostname=オリジナルAgent)となっていました。
④上記状態でクローンのzabbix-agentdを起動すると、クローンAgentのwinevtが
 Zabbix-Serverで新たに読み込まれてしまいます。

基本的には、上記事象では運用上の手順ミスとはなりますが、可能な限りZabbixServer設定で
回避できるよう検討をしたいと考えております。

〇補足
zabbix_server (Zabbix) 3.4.2 + zabbix_agentd (daemon) (Zabbix) 3.4.2環境で試しましたが
PSK暗号化でのホスト登録であっても、サーバ丸ごとコピーしたものですと同じ事象が発生します。

運用手順回避以外で何かお知恵ありましたら、宜しくお願い致します。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

稼働している監視対象をクローンを作成してそれを起動してしまっ
たら、Zabbixサーバーに接続してしまうと、稼働していた元のサー
バーと混同してしまいます。

IPを変更して、元のサーバーとクローンしたサーバーとを同時に起
動してしまった場合、タイプが「Zabbixエージェント」のアイテム
であれば、問題ないと思うのですが、タイプが「Zabbixエージェン
ト(アクティブ)」であるイベントログ監視やログ監視では問題が発
生します。

というのも、ZabbixエージェントからZabbixサーバーに接続して、
アクティブで監視すべき項目のリストを取得して稼働するのですが、
その際にイベントログやログの監視の場合は、監視の対象となるロ
グとその位置(何バイト目まで読んだか)もZabbixサーバーから取得
します。

元のサーバーとクローンしたサーバーの両方のエージェントは別々
に動きますので、それぞれのOSや稼働状態によって別のイベントロ
グが発生することが考えられます。
そうすると、そのイベントログが出力されるたびにZabbixサーバー
に通知され、イベントログがどこまで読み込まれたかの位置のずれ
が発生する可能性があります。

保存してある読み込み済みの位置よりも、現在のイベントログのサ
イズが小さいような場合、Zabbixエージェントは、新規にイベント
ログファイルが作成されたと判断されて、イベントログを最初から
読み込みなおすという現象が発生するわけです。

〇確認したい内容
Zabbix-ServerにおけるActiveCheck(WindowsEventLog)の際に、
Agentの特定はagentd.confのHostnameのみを参照しているのでしょうか?

zabbix_agentd.conf内のHostnameもしくはHostnameItemの値と、
Zabbixサーバー上のホストの名前が一致していると同じサーバー
であると判断されるでしょう。

クローンだと、OSの様々なファイルや値も同じなので、暗号化した
としてもキーファイルや証明書が一緒では別のサーバーとしては判
別できません。

運用手順以外での回避はできないと思います。

また、Agentから送信されるイベント情報はServerでどのように管理されて
「更新されたもの」or「新規にすべてを読み込む対象」と判断しているのでしょうか?

それぞれのアイテムに対して、どのイベントログのどの位置まで取
得したかが管理されています。

その情報は、Zabbixエージェントがイベントログを取得してZabbix
サーバーに通知するたびに、Zabbixサーバー上の情報も更新される
ようになっています。

Zabbixエージェントが稼働している間は、Zabbixエージェント上で
どの位置まで読み込んだかはメモリ上に保持されています。
何らかの理由でZabbixエージェントからZabbixサーバーに通知でき
なかった場合は、Zabbixエージェントを起動した際に再度Zabbixサ
ーバーからどの位置まで読み込み済みかの情報を取得できるので、
続きから監視を開始できるようになっています。

ユーザー t-kubo の写真

>TNK様
早速のご回答ありがとうございます。

やはり運用回避以外(というか正しい手順実行)でないと厳しそうですね。。

ただ、見方を変えるとZabbix-Server側の脆弱性にも取れるので
何となくですが、ZABBIXへの改善を求めたい気がします。
(Server側でActiveCheck情報受信時ににDestonation IPをチェックするなど)

イベントログ情報の管理仕様もありがとうございます。
大変勉強になりました。

今回ActionにRemoteコマンドなどの処理がなかったため、事故になりませんでしたが
もしC:\Windows\System32\shutdown.exeなどと連動していたらと思うと恐ろしいです。。。
まずは、仮想マシンのオペレーターへ運用手順改善を強く求めていきます。