Nagios(3.0.1)を使用してMSMQキューカウンターを監視しようとしています。リモートサーバーはNC_Netを実行しています。 check_command構成は次のようになります。
check_command check_nt!COUNTER!-l "\\MSMQ Queue(servername\\private$\\queuename)\\Messages in Queue","%.f messages in MSMQ queue" -w 5 -c 10
これは機能しません。ドル記号をエスケープする必要があると思いますが、その方法を理解するのに苦労しています。
この記事 は「$$」を示唆しています。
check_command check_nt!COUNTER!-l "\\MSMQ Queue(servername\\private"$$"\\queuename)\\Messages in Queue","%.f messages in MSMQ queue" -w 5 -c 10
しかし、それは機能しません。他のいくつかの方法(円記号、一重引用符など)を試しました。
助言がありますか?
編集:
私はコマンドラインを介していくつかのテストを行ってきました。これが問題の原因であると私が信じる理由の1つです。次の作品:
./check_nt -H hostip -v COUNTER -l "\\MSMQ Queue(Computer Queues)\\Messages in Queue","%.f messages in MSMQ queue" -w 5 -c 10
しかし、これはしません:
./check_nt -H hostip -v COUNTER -l "\\MSMQ Queue(servername\\private$\\queuename)\\Messages in Queue","%.f messages in MSMQ queue" -w 5 -c 10
また、ECHOを使用して、これらのコマンドがどのように拡張されるかを確認しましたが、それは役に立ちませんでした。
編集:
ドル記号ではなかったことがわかりました。下記参照。
リモートサーバー上のNC_NetがWindowsイベントログに記録されることを発見しました。エラーを見ると、ドル記号の問題ではないと思い始めています。
私はいくつかのテストを実行しました(失敗すると予想しています)。最初に、カウンター名を「\ MSMQキュー(サーバー名)\メッセージインキュー」として指定しました
結果のエラーは次のとおりです。
Exeption occured during Counter check :Instance 'servername' does not exist in the specified Category.::>\MSMQ Queue(servername)\Messages in Queue
その場合、カウンターインスタンスを見つけることができません。 2つ目は、「\ MSMQ Queue(servername\test1)\ MessagesinQueue」を指定しました
Exeption occured during Counter check :Could not locate Performance Counter with specified category name 'MSMQ Queue', counter name 'test1)\Messages in Queue'.::>\MSMQ Queue(servername\test1)\Messages in Queue
その場合、カウンターが見つかりません。
「servername\test1」の\が原因で、NC_Netがカウンター名を異なる方法で解析しているように見えます。
編集:
問題は、カウンターインスタンス名の\が原因でした。次のように機能するように、カウンター名を指定するための代替構文があることを発見しました。
^MSMQ Queue^servername\\private\$\\queuename^Messages in Queue
Nagios.cfgで完全なデバッグを有効にして、コマンドが実際に何に展開されるかを確認できます。これにより、ドル記号が実際に問題であるかどうかがわかります。これを行うには、以下を設定します。
debug_level=-1
debug_verbosity=2
# DEBUG FILE
debug_file=/usr/local/nagios/var/nagios.debug
max_debug_file_size=1000000
チェックが多い場合は、デバッグファイルの最大サイズを設定する必要があります。その冗長性とレベルでは、ログがすぐにいっぱいになるためです。
そしてそれらは多分(例):
Sudo /etc/init.d/nagios reload
次に、ログを追跡しながら、チェックを実行する必要があります。また、ノイズを減らすために、「check_nt」のようなものを使用してテールをgrepにパイプすることもできます。
文字をエスケープするには\を使用する必要があると思いますが、次のリンクは2つの\が必要な場合があることを示しています
これがお役に立てば幸いです-> リンク <-