ADC

ユーザーモニターを理解する

ユーザーモニターは、カスタムモニターの範囲を拡張します。ユーザーモニターを作成して、NetScaler ADCアプライアンスがサポートしていないカスタマイズされたアプリケーションとプロトコルの健全性を追跡できます。次の図は、ユーザーモニターの動作を示しています。

図1:ユーザーモニター

User-monitor

ユーザーモニターには、次のコンポーネントが必要です。

  • ディスパッチャー。モニタリング要求をリッスンするアプライアンス上のプロセス。ディスパッチャは、ループバック IP アドレス(127.0.0.1)およびポート 3013 上に置くことができます。ディスパッチャは、内部ディスパッチャとしても知られています。ディスパッチャは、Common Gateway Interface (CGI) をサポートする Web サーバーでも使用できます。このようなディスパッチャは、外部ディスパッチャとも呼ばれます。これらは、.NET スクリプトなど、FreeBSD 環境では動作しないカスタムスクリプトに使用されます。

注:

モニターで「secure」オプションを有効にすることで、モニターとディスパッチャーがHTTPの代わりにHTTPSを使用するように構成し、外部ディスパッチャーとして構成できます。ただし、内部ディスパッチャは HTTP のみを認識し、HTTPS を使用することはできません。

In a HA setup, the dispatcher runs on both the primary and secondary Citrix ADC appliances. The dispatcher remains inactive on the secondary appliance.

[スクリプト]。スクリプトは、負荷分散サーバーにカスタムプローブを送信し、ディスパッチャに応答コードを返すプログラムです。スクリプトはディスパッチャに任意の値を返すことができますが、プローブが成功した場合、スクリプトは値 0 を返さなければなりません。ディスパッチャは、その他の値をプローブ障害と見なします。

NetScaler ADCアプライアンスには、一般的に使用されるプロトコルのサンプルスクリプトがバンドルされています。これらのスクリプトは、/nsconfig/monititors ディレクトリに存在します。スクリプトを追加する場合は、そこにスクリプトを追加します。既存のスクリプトをカスタマイズするには、新しい名前でコピーを作成し、それを修正します。

重要:

  • NetScaler ADCリリース13.0ビルド41.20以降、nsntlm-lwp.plスクリプトを使用して安全なNTLMサーバーを監視するためのモニターを作成できます。

  • リリース 10.1 ビルド 122.17 以降、ユーザモニタ用のスクリプトファイルが新しい場所にあります。

    MPX または VPX 仮想アプライアンスをリリース 10.1 ビルド 122.17 以降にアップグレードする場合、変更点は次のとおりです。

    • /nsconfig/monitors/ に conflicts という名前の新しいディレクトリが作成され、以前のビルドのすべての組み込みスクリプトがこのディレクトリに移動されます。
    • すべての新しい組み込みスクリプトは、/netscaler/monitors/ ディレクトリで利用できます。すべてのカスタムスクリプトは、/nsconfig/monitors/ ディレクトリにあります。
    • 新しいカスタムスクリプトを /nsconfig/monitors/ ディレクトリに保存します。
    • アップグレードの完了後、カスタムスクリプトが作成され、組み込みスクリプトと同じ名前で /nsconfig/monitors/ ディレクトリに保存されると、/netscaler/monitors/ ディレクトリ内のスクリプトが優先されます。カスタムスクリプトは実行されません。

    リリース 10.1 ビルド 122.17 以降で仮想アプライアンスをプロビジョニングする場合、変更内容は次のとおりです。

    • すべての組み込みスクリプトは、/netscaler/monitors/ ディレクトリにあります。
    • /nsconfig/monitors/ ディレクトリが空です。
    • カスタムスクリプトを作成する場合は、/nsconfig/monitors/ ディレクトリに保存する必要があります。

スクリプトが正しく機能するには、次の手順を実行します。

  • スクリプト名の最大文字数は 63 文字以下でなければなりません。
  • スクリプトに指定できるスクリプト引数の最大数は 512 を超えないようにしてください。
  • パラメータースクリプト引数に指定できる最大文字数は 639 文字以下でなければなりません。

スクリプトをデバッグするには、CLI から nsumon-debug.pl スクリプトを使用してスクリプトを実行する必要があります。nsumon-debug.pl スクリプトの引数として、スクリプト名 (引数付き)、IP アドレス、およびポートを使用します。ユーザーは、nsumon-debug.pl スクリプトのスクリプト名、IP アドレス、ポート、タイムアウト、およびスクリプト引数を使用する必要があります。

CLIで、次のように入力します。

nsumon-debug.pl <scriptname> <IP> <port> <timeout> <partitionID> [scriptarguments][is_secure]
<!--NeedCopy-->

重要: リリース 10.5 ビルド 57.x 以降、ユーザーモニター用の 11.0 スクリプトファイルは IPv6 アドレスをサポートし、次の変更を含めました。

  • 次のプロトコルでは、IPv6サポート用の新しいpm filesが含まれています。

    • RADIUS
    • NNTP
    • POP3
    • SMTP
  • /netscaler/monitors/ の次のサンプルスクリプトが IPv6 サポート用に更新されました。

    • nsbmradius.pl

    • nsldap.pl

    • nsnntp.pl

    • nspop3 nssf.pl

    • nssnmp.pl

    • nswi.pl

    • nstftp.pl

    • nssmtp.pl

    • nsrdp.pl

    • nsntlm-lwp.pl

    • nsftp.pl

    • nsappc.pl

    リリース10.5ビルド57.xまたは11.0にアップグレードした後、IPv6サービスで既存のカスタムスクリプトを使用する場合は、の更新されたサンプルスクリプトで提供された変更で既存のカスタムスクリプトを更新してください。 /netscaler/monitors/.

注:

サンプルスクリプト nsmysql.pl は IPv6 アドレスをサポートしていません。IPv6サービスがnsmysql.plを使用するユーザーモニターにバインドされている場合、プローブは失敗します。

  • IPv6 アドレスをサポートするために、次の LB モニタタイプが更新されました。

    • USER

    • SMTP

    • NNTP

    • LDAP

    • SNMP

    • POP3

    • FTP_EXTENDED

    • StoreFront

    • APPC

    • CITRIX_WI_EXTENDED

    これらの LB モニタタイプのいずれかを使用するカスタムスクリプトを作成する場合は、カスタムスクリプトに IPv6 サポートを含めるようにしてください。IPv6 サポート用のカスタムスクリプトで行う必要がある変更については、/netscaler/monitors/ の関連するサンプルスクリプトを参照してください。

サーバーのステータスを追跡するために、モニターは設定されたディスパッチャに HTTP POST 要求を送信します。この POST リクエストには、サーバーの IP アドレスとポート、および実行する必要があるスクリプトが含まれます。ディスパッチャは、ユーザー定義パラメータ (存在する場合) を使用して、スクリプトを子プロセスとして実行します。次に、スクリプトはプローブをサーバーに送信します。スクリプトは、プローブのステータス (応答コード) をディスパッチャに送信します。ディスパッチャは、レスポンスコードを HTTP レスポンスに変換し、モニタに送信します。HTTP 応答に基づいて、モニタはサービスをアップまたはダウンとしてマークします。

NetScaler ADCアプライアンスは、エラーメッセージを /var/nslog/nsumond.log ユーザーモニタープローブが失敗した場合のファイル。これらの詳細なエラーメッセージは、GUIおよびshow service/service groupコマンドの CLI に表示されます。

次の表は、ユーザーモニターと、考えられる失敗の原因の一覧です。

ユーザーモニターの種類 プローブ失敗の理由
SMTP モニタがサーバへの接続を確立できない。
NNTP モニタがサーバへの接続を確立できない。
  スクリプト引数がないか無効です。無効な数の引数または引数の形式が含まれる可能性があります。
  モニタが NNTP グループを見つけられない。
LDAP モニタがサーバへの接続を確立できない。
  スクリプト引数がないか無効です。無効な数の引数または引数の形式が含まれる可能性があります。
  モニタが LDAP サーバにバインドできない。
  モニタが LDAP サーバでターゲットエンティティのエントリを見つけない。
FTP サーバーへの接続がタイムアウトします。
  スクリプト引数がないか無効です。無効な数の引数または引数の形式が含まれる可能性があります。
  ログオンが失敗する。
  モニタがサーバ上のファイルを検出できない。
POP3 モニタがデータベースへの接続を確立できない。
  スクリプト引数がないか無効です。無効な数の引数または引数の形式が含まれる可能性があります。
  ログオンが失敗する。
  SQL クエリの準備が失敗します。
  SQL クエリの実行が失敗します。
SNMP モニタがデータベースへの接続を確立できない。
  スクリプト引数がないか無効です。無効な数の引数または引数の形式が含まれる可能性があります。
  ログオンが失敗する。
  モニタが SNMP セッションを作成できない。
  モニタがオブジェクト識別子を見つけられない。
  モニタのしきい値の設定は、モニタの実際のしきい値以上です。
RDP (Windows ターミナルサーバー) スクリプト引数がないか無効です。無効な数の引数または引数の形式が含まれる可能性があります。
  モニタがソケットを作成できない。
  バージョンの不一致。
  モニタが接続を確認できない。

次のコマンドを使用して、CLI からログファイルを表示できます。

> shell
root@ns# cat /var/nslog/nsumond.log
root@ns# exit
>
<!--NeedCopy-->

このコマンドは BSD シェルを開き、ログファイルを画面に表示し、BSD シェルを閉じて CLI に戻ります。

NetScaler ADCリリース13.0ビルド52.Xより前のshow service/service groupコマンドでは、ユーザーモニターのプローブの失敗の原因として「プローブに失敗しました」という一般的なエラーメッセージが表示されました。

例:

show service ftp

Monitor Name: mon2
State: UNKNOWN  Weight: 1   Passive: 0
Probes: 3    Failed [Total: 0 Current: 0]
Last response: Failure - Probe failed.
Response Time: 1071.838 millisec
<!--NeedCopy-->

NetScaler ADCリリース13.0ビルド52.X以降では、show service/service groupコマンドがユーザーユーザーモニタープローブの失敗の実際の原因を表示します。

例:

show service ftp

Monitor Name: mon2
State: DOWN   Weight: 1   Passive: 0
Probes: 729   Failed [Total: 726 Current: 726]
Last response: Failure - Login failed.
Response Time: 8000.0 millisec
<!--NeedCopy-->

ユーザーモニターには、タイムアウト値とプローブ障害の再試行回数もあります。ユーザーモニターは、ユーザーモニター以外のモニターでも使用できます。CPU 使用率が高い場合、非ユーザモニタを使用すると、サーバ障害をより迅速に検出できます。

CPU 使用率が高いときにユーザモニタプローブがタイムアウトしても、サービスの状態は変更されません。

Example1:

add lb monitor <name> USER –scriptname <script-name> -resptimeout 5 seconds
<!--NeedCopy-->

注:

スクリプト可能なモニタの場合、応答タイムアウトは、予想されるタイムアウト+ 1 秒に等しい値に設定する必要があります。たとえば、タイムアウトが 4 秒になると予想される場合、応答タイムアウトを 5 秒に設定します。

Example2:

add lb monitor <name> USER –scriptname <script-name> -scriptargs <Arguments> -secureargs <Arguments>
<!--NeedCopy-->

注:

スクリプトに関連する機密データには、scriptargsパラメーターの代わりにsecureargsパラメーターを使用することをお勧めします。

ユーザーモニターを理解する

この記事の概要