Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

NagiosでWindowsホストを監視する方法:ステップバイステップ完全ガイド

本記事では、Windowsマシンの「プライベート」サービス、すなわちCPU負荷ディスク使用量メモリ使用量各種サービスなどを監視する方法を解説します。これを実現するには、WindowsマシンにNSClient++アドオンをインストールする必要があります。このアドオンはWindowsマシンとNagios間のプロキシとして動作し、check_ntプラグインと通信することで実際のサービスを監視します。当サイトのNagiosインストールガイドに従っていれば、check_ntプラグインはすでにNagios監視サーバーにインストールされています。

この記事では、以下のガイドに従ってNagiosサーバーのインストールと設定がすでに完了していることを前提としています。

  1. RHEL/CentOS 6.x/5.x および Fedora 19/18/17へのNagios 4.0.1のインストール方法
  2. Nagios監視サーバーへのLinuxホストの追加方法

Windowsマシン監視までの流れ

Windowsマシンを監視するには、以下の手順を実行する必要があります。

  1. WindowsマシンにNSClient++アドオンをインストールする
  2. Windowsマシンを監視できるようNagiosサーバーを設定する
  3. Windowsマシン監視用の新しいホスト定義とサービス定義を追加する
  4. Nagiosサービスを再起動する

このガイドをできるだけ簡単に進められるよう、Nagiosのインストール時に一部の設定はすでに行われています。

  1. check_ntコマンド定義がcommand.cfgファイルにすでに追加されています。このコマンド定義は、check_ntプラグインがWindowsサービスを監視する際に使用されます。
  2. windows-serverホスト用のテンプレートtemplates.cfgファイルにすでに作成されています。このテンプレートにより、新しいWindowsホスト定義を簡単に追加できます。

上記2つのファイル「command.cfg」と「templates.cfg」は、/usr/local/nagios/etc/objects/ディレクトリにあります。必要に応じて独自の定義を修正・追加することも可能ですが、本記事の手順に従えば、20分以内にWindowsホストの監視を開始できます。

ステップ1:WindowsマシンへのNSClient++エージェントのインストール

リモートのWindowsホストにNSClient++エージェントをインストールするには、以下の手順に従ってください。まず、最新の安定版であるNSClient++ 0.3.1のソースファイルを下記のリンクからダウンロードします。

  • https://sourceforge.net/projects/nscplus/

ダウンロードが完了したら、NSClient++のファイルを新しいC:\NSClient++ディレクトリに展開します。

次に、スタート画面から「ファイル名を指定して実行」を選択し、「cmd」と入力してEnterキーを押し、MS-DOSコマンドプロンプトを開きます。その後、C:\NSClient++ディレクトリへ移動します。

C:\NSClient++

続いて、以下のコマンドでシステムにNSClient++サービスを登録します。

nsclient++ /install

最後に、以下のコマンドでNSClient++のシステムトレイ(SysTray)をインストールします。

nsclient++ SysTray

Windowsのサービス管理ツールを開き、NSClientを右クリックして「プロパティ」→「ログオン」タブを選択し、「デスクトップとの対話をサービスに許可」というチェックボックスにチェックを入れます。まだ許可されていない場合は、必ずチェックを有効にしてください。

NagiosでWindowsホストを監視する方法:ステップバイステップ完全ガイド

C:\NSClient++ディレクトリにあるNSC.INIファイルを開き、「modules」セクションで定義されているモジュールのうち、CheckWMI.dllRemoteConfiguration.dll以外のコメントアウト(先頭のセミコロン)をすべて外します。

[modules]
;# NSCLIENT++ MODULES
;# A list with DLLs to load at startup.
; You will need to enable some of these for NSClient++ to work.
; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
; * *
; * N O T I C E ! ! ! - Y O U H A V E T O E D I T T H I S *
; * *
; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
FileLogger.dll
CheckSystem.dll
CheckDisk.dll
NSClientListener.dll
NRPEListener.dll
SysTray.dll
CheckEventLog.dll
CheckHelpers.dll
;CheckWMI.dll
;
; RemoteConfiguration IS AN EXTREM EARLY IDEA SO DONT USE FOR PRODUCTION ENVIROMNEMTS!
;RemoteConfiguration.dll
; NSCA Agent is a new beta module use with care!
;NSCAAgent.dll
; LUA script module used to write your own "check deamon" (sort of) early beta.
;LUAScript.dll
; Script to check external scripts and/or internal aliases, early beta.
;CheckExternalScripts.dll
; Check other hosts through NRPE extreme beta and probably a bit dangerous! :)
;NRPEClient.dll

次に、「Settings」セクション内の「allowed_hosts」のコメントアウトを外し、Nagios監視サーバーのIPアドレスを指定します。空白のままにすると、すべてのホストからの接続が許可されるため注意してください。

[Settings]
;# ALLOWED HOST ADDRESSES
; This is a comma-delimited list of IP address of hosts that are allowed to talk to the all daemons.
; If leave this blank anyone can access the deamon remotly (NSClient still requires a valid password).
; The syntax is host or ip/mask so 192.168.0.0/24 will allow anyone on that subnet access
allowed_hosts=172.16.27.41

さらに、「NSClient」セクション内の「port」のコメントアウトを外し、デフォルトポートの「12489」を設定します。Windowsファイアウォールでポート12489を開放しておくことも忘れないでください。

[NSClient]
;# NSCLIENT PORT NUMBER
; This is the port the NSClientListener.dll will listen to.
port=12489

最後に、以下のコマンドでNSClient++サービスを起動します。

nsclient++ /start

正しくインストールと設定が完了していれば、システムトレイに黒い「M」が入った黄色い円形のアイコンが表示されるはずです。

ステップ2:Nagiosサーバーの設定とWindowsホストの追加

次に、Nagiosサーバーにログインし、新しいWindowsマシンを監視できるよう、Nagiosの設定ファイルにオブジェクト定義を追加します。Viエディタでwindows.cfgファイルを開きましょう。

[root@tecmint]# vi /usr/local/nagios/etc/objects/windows.cfg

Windowsマシン用のサンプルホスト定義がすでに用意されているので、host_namealiasaddressの各フィールドを、監視対象のWindowsマシンに合わせて変更するだけでOKです。

###############################################################################
###############################################################################
#
# HOST DEFINITIONS
#
###############################################################################
###############################################################################
# Define a host for the Windows machine we'll be monitoring
# Change the host_name, alias, and address to fit your situation
define host{
 use windows-server ; Inherit default values from a template
 host_name winserver ; The name we're giving to this host
 alias My Windows Server ; A longer name associated with the host
 address 172.31.41.53 ; IP address of the host
 }

以下のサービスはwindows.cfgファイルですでに追加・有効化されています。他にも監視したいサービスがある場合は、同じ設定ファイルに定義を追記するだけで対応できます。その際、すべてのサービス定義のhost_nameを、上記のホスト定義で指定したhost_nameと一致させるようにしてください。

define service{
 use generic-service
 host_name winserver
 service_description NSClient++ Version
 check_command check_nt!CLIENTVERSION
 }

# Windowsサーバーの稼働時間(Uptime)を監視するためのサービス定義
define service{
 use generic-service
 host_name winserver
 service_description Uptime
 check_command check_nt!UPTIME
 }

# CPU使用率を監視するためのサービス定義。
# 5分平均のCPU負荷が80%以上でWARNING、90%以上でCRITICALアラートを発報
define service{
 use generic-service
 host_name winserver
 service_description CPU Load
 check_command check_nt!CPULOAD!-l 5,80,90
 }

# メモリ使用量を監視するためのサービス定義。
# 使用率が80%以上でWARNING、90%以上でCRITICALアラートを発報
define service{
 use generic-service
 host_name winserver
 service_description Memory Usage
 check_command check_nt!MEMUSE!-w 80 -c 90
 }

# C:\ドライブの使用状況を監視するためのサービス定義。
# ディスク使用率が80%以上でWARNING、90%以上でCRITICALアラートを発報
define service{
 use generic-service
 host_name winserver
 service_description C:\ Drive Space
 check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
 }

# W3SVCサービス(IIS)の状態を監視するためのサービス定義。
# サービスが停止している場合にCRITICALアラートを発報
define service{
 use generic-service
 host_name winserver
 service_description W3SVC
 check_command check_nt!SERVICESTATE!-d SHOWALL -l W3SVC
 }

# Explorer.exeプロセスを監視するためのサービス定義。
# プロセスが起動していない場合にCRITICALアラートを発報
define service{
 use generic-service
 host_name winserver
 service_description Explorer
 check_command check_nt!PROCSTATE!-d SHOWALL -l Explorer.exe
 }

最後に、/usr/local/nagios/etc/nagios.cfg内のwindows.cfgの行のコメントアウトを外します。

[root@tecmint]# vi /usr/local/nagios/etc/nagios.cfg
# Definitions for monitoring a Windows machine
cfg_file=/usr/local/nagios/etc/objects/windows.cfg

続いて、Nagiosの設定ファイルにエラーがないか検証します。

[root@tecmint]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check

検証プロセスでエラーメッセージが表示された場合は、エラーが一切出なくなるまで修正を繰り返してください。すべてのエラーを解消したら、Nagiosサービスを再起動します。

[root@tecmint]# service nagios restart
Running configuration check...done.
Stopping nagios: done.
Starting nagios: done.

以上で設定完了です。「https://サーバーのIPアドレス/nagios」または「https://FQDN/nagios」にアクセスし、ユーザー名「nagiosadmin」とパスワードを入力してNagiosのWeb管理画面にログインしましょう。リモートのWindowsホストが追加され、監視が開始されていることを確認してください。

NagiosでWindowsホストを監視する方法:ステップバイステップ完全ガイド

今回はここまでです。次回の記事では、Nagios監視サーバーへのプリンタースイッチの追加方法をご紹介する予定です。NagiosへのWindowsホスト追加で困ったことがあれば、ぜひコメント欄でお知らせください。今後も役立つ記事をお届けしていきますので、お楽しみに!

  1. Git BashからWindowsでSublime Textを起動する方法|エイリアス設定の完全ガイド

    Git Bashから直接Sublime Textエディタを開きたいと思ったことはありませんか?この記事では、その手順をわかりやすく解説します。設定自体はとてもシンプルなので、この記事を読み終える頃には、Git BashからワンコマンドでSublime Textを起動できるようになっているはずです。筆者も最初は設定方法に少し時間がかかりましたが、その経験で得た知識をここで共有します。ぜひ参考にしてください。前提条件作業を始める前に、以下の2点を確認しておきましょう。Sublime Textエディタがインストール済みであることGitがインストール済みであることはじめに:Sublime Textとは

  2. Linuxの設定ファイルからコメント行を一瞬で除外してクリーンに表示する方法

    はじめに 数百行ものコメントが並ぶ長大な設定ファイルの中から、重要な設定項目だけを手早く確認したいと思ったことはありませんか?この記事では、Linuxでコメント行を除いた状態で設定ファイルを表示する、いくつかの便利な方法をご紹介します。 あわせて読みたい: ccat – catコマンドの出力をシンタックスハイライトや色付けで見やすく表示する grepコマンドでコメント行を除外する この目的にはgrepコマンドが活躍します。以下のコマンドを実行すると、PHP 7.1 の現在の設定内容をコメントなしで表示できます。コメントに使用される ; で始まる行がすべて取り除かれます。 なお、; はシェルにと