web-dev-qa-db-ja.com

NC_NetのNagiosでのエスケープ文字

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を使用して、これらのコマンドがどのように拡張されるかを確認しましたが、それは役に立ちませんでした。

編集:

ドル記号ではなかったことがわかりました。下記参照。

2
Robin M

リモートサーバー上の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
0
Robin M

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にパイプすることもできます。

3
Kyle Brandt

文字をエスケープするには\を使用する必要があると思いますが、次のリンクは2つの\が必要な場合があることを示しています

これがお役に立てば幸いです-> リンク <-

0
Rodent43