WindowsでNAS等のネットワークドライブをマウントし、Zabbixで監視する方法をご紹介します!
Zabbixを知ってる方であれば、すぐに方法を思い付くかもしれませんが、ネットワークドライブの監視には落とし穴がありますので、ぜひ最後までお読みください。
ネットワークドライブは監視できない?
ディスクや共有フォルダ、ファイルの監視で誰もが真っ先に思い付くのは、デフォルトのテンプレートのアイテムや、ディスカバリールールのアイテムのプロトタイプなどで一般的に使用される、以下のようなアイテムキーだと思います。
しかし、結論から言うと、使えまてん!
厳密に言うと、監視データは何かしら取得できますが、Zabbixとしてはそのデータの整合性や、機能として正常な動作を保証していないとのこと。
ネットワークドライブを監視できない理由
理由としては、マウントしているネットワークドライブは、Zabbix Agentをインストールしているシステム上(Windows)とは別に管理されているからです。
勘違いしなように付け加えますが、例え任意のドライブにマウントしていない共有フォルダやその中にあるファイルも監視することはできません。
Zabbixのアイテムキーについては公式サイトをご覧ください。
簡単に言うと、Zabbix Agentで監視しているホストのローカルドライブではないので、他のホスト(ネットワーク上)のドライブは管理できませんって話です。
では、どうするのか?
NASにエージェントを導入して監視したら良いだけの話ですが、市販されているNASは基本的に機能を追加することはできません。
まぁ~、最近ではZabbix Agentをインストールできる変態的なNASも販売されてますが。。
Zabbix Agentを入れられるNAS
有名なNASと言ったらBuffalo、Synology、QNAPくらいかな?
その中でも特にQNAPは自由度が高く、QNAPはZabbix Agentをインストールできるようです。
結局のところ中身はLinuxだと思うので、頑張れば何でも入れられると思いますが。。
実際に、SynologyのNASにZabbix Serverを導入した猛者もいましたねw
少し話がそれましたw
それでは本題です!
Zabbix Agentを入れられない場合は、コマンド監視かSNMP監視の2通りの方法しかありません。
(てか、思いつきません!あったら教えてね~。)
Windowsコマンドによる監視
まず、コマンド監視についてですが、その名の通りWindowsのコマンドを使用した監視になります。SNMP監視は今回の趣旨ではありませんし、大体どのような機種でもできると思いますので、ここでは割愛させていただきます。
system.runでコマンド実行
具体的に言うと、Windowsコマンドでネットワークドライブを監視すると言うより、Zabbixのアイテムキーである「system.run」でWindowsにコマンドを実行するように命令して、そのコマンドの結果を監視データとして利用する方法になります。
この方法で監視することにより、Zabbixエージェントが直接的にネットワークドライブを監視するわけではなく、あくまでZabbix AgentがインストールされているWindows自身がコマンドでネットワークドライブの情報を取得することで監視できるという仕組みです。
ネットワークドライブの監視
以下の方法は、ネットワークドライブのフォルダやファイルの存在をコマンドで確認し、存在したら「1」、接続できなかったり、存在しなければ「0」を監視データとしてZabbixに返します。
1 |
system.run[if exist "\\192.168.100.xxx\path\to\file" (echo 1) else (echo 0)] |
ネットワークドライブをマウントしてたら以下のようになります。
1 |
system.run[if exist "Z:\path\to\file" (echo 1) else (echo 0)] |
注)Zabbix Agentの設定が必要!
「system.run」キーを使用する際には、Zabbix Agentの設定ファイル「zabbix_agentd.conf」(Zabbix Agent2の場合は、zabbix_agent2.conf)を変更して、Zabbixエージェントが「system.run」キーを使用してWindowsコマンドを実行することを許可してあげる必要があります。
具体的には以下の通りです。
1 |
AllowKey=system.run[*] |
中の「*(アスタリスク)」は、パラメータを何でも許可しますという意味です。
もっと細かく設定したい場合は、AllowKeyを追加してください。
以上です!
ネットワークドライブの監視に困った方は、ぜひ試してみてください。
【追記】Windows共有フォルダは要注意!
ネットワークドライブの接続先がLinuxではなく、Windowsの共有フォルダの場合は、Zabbix Agentサービスの実行権限を変更する必要があります。
この実行権限の変更は、Linux用のZabbix Agentの設定ファイルでいうところの「AllowRoot」の設定に当たります。
Zabbix Agentの実行権限を変更
WindowsのZabbix Agentの実行権限は以下のように変更します。
- Windowsの[サービス]から[Zabbix Agent (2)]を右クリックし、[プロパティ]を押下
- [ログオン]タブへ移動し、[アカウント]を選択
- Administrator(管理者)のアカウントとパスワードを入力し、[OK]を押下
警告が表示されたら、そのまま[OK]を押下してください。
最後に、Zabbix Agentサービスを再起動したら設定は完了になります。
この設定をすると、ネットワークドライブをマウントせずとも、IPアドレスとフォルダパスだけで監視できます。
どうしてもマウントしたい場合は、net useコマンドをsystem.run[]の中で行ってください。
コメント