XenServer

SNMP を使用してホストと dom0 のリソースを監視する

注:

SNMP 機能は、XenServer Premium または Trial Edition のお客様にご利用いただけます。XenServer のライセンスの詳細については、「ライセンス」を参照してください。アップグレードまたは XenServer ライセンスの取得については、XenServer Web サイト をご覧ください。

プール管理者ロールを使用すると、SNMP を使用して、XenServer® ホストおよびホストの制御ドメインである dom0 によって消費されるリソースをリモートで監視できます。ネットワーク管理システム (NMS) とも呼ばれる SNMP マネージャーは、XenServer ホストで実行されている SNMP エージェントにクエリ要求を送信します。SNMP エージェントは、さまざまなメトリックで収集されたデータを NMS に送り返すことで、これらのクエリ要求に応答します。収集できるデータは、管理情報ベース (MIB) と呼ばれるテキストファイル内のオブジェクト識別子 (OID) によって定義されます。OID は、CPU やメモリ使用量など、ネットワークデバイスに関する測定可能な特定の情報を表します。

また、トラップを設定することもできます。トラップは、XenServer で特定のイベントが発生したことを NMS に警告するエージェントが開始するメッセージです。クエリ要求とトラップの両方を使用して、XenServer プールのステータスを監視できます。これらはメトリックおよびトラップオブジェクトとして定義され、XenServer ダウンロードページ からダウンロードできる MIB ファイル XENSERVER-MIB.txt 内の OID によって識別されます。次の表に、これらのメトリックおよびトラップオブジェクトに関する情報を示します。

メトリックオブジェクト

次の表にリストされているメトリックを使用して、XenServer ホストに関する特定の情報を要求できます。これらのメトリックは、SNMP マネージャーが SNMP エージェントにクエリ要求を送信するときに使用されるため、このデータを NMS で表示できます。

これらのメトリックオブジェクトから返されたデータは、NMS または xe CLI から表示できます。xe CLI からメトリックオブジェクトをクエリするには、host-data-source-query または vm-data-source-query を実行し、data-source パラメーターの値として RRDD データソースを指定します。例:

xe host-data-source-query data-source=cpu_avg host=<host UUID>
<!--NeedCopy-->

注:

デフォルトでは、NMS はポート 161 を使用して OID クエリ要求を SNMP エージェントに送信します。

オブジェクト識別子 (OID) RRDD データソース 返されたデータ タイプ
1.3.6.1.4.1.60953.1.1.1.1 memory Dom0 の合計メモリ (MB) 符号なし32ビット整数
1.3.6.1.4.1.60953.1.1.1.2 memory_internal_free Dom0 の空きメモリ (MB) 符号なし32ビット整数
1.3.6.1.4.1.60953.1.1.1.3 cpu_usage Dom0 の CPU 使用率 (%) 浮動小数点数
1.3.6.1.4.1.60953.1.1.1.4 memory_total_kib ホストの合計メモリ (MB) 符号なし32ビット整数
1.3.6.1.4.1.60953.1.1.1.5 memory_free_kib ホストの空きメモリ (MB) 符号なし32ビット整数
1.3.6.1.4.1.60953.1.1.1.6 cpu_avg ホストのCPU使用率 (パーセンテージ) 浮動小数点数
1.3.6.1.4.1.60953.1.1.1.7 (注1を参照) pCPU数 符号なし32ビット整数
1.3.6.1.4.1.60953.1.1.1.8 running_vcpus 実行中のvCPU数 符号なし32ビット整数
1.3.6.1.4.1.60953.1.1.1.9 running_domains 稼働中のVM数 符号なし32ビット整数

注記:

  1. pCPUの名前はcpuの形式で、その後に数字が続きます。xe CLIからpCPUの数を照会するには、次のコマンドを実行します。

    xe host-data-source-list host=<host UUID> | grep -E 'cpu[0-9]+$'

    これは、正規表現cpu[0-9]+に一致するCPUメトリックのリストを返します。

トラップ

トラップは、特定のイベントが発生したときにSNMPマネージャーに通知するためにSNMPエージェントによって送信されるアラートであり、XenServerホストを監視し、問題を早期に特定できるようにします。制限に達したとき(たとえば、ホストのCPU使用率が高すぎる場合)にトラップを生成するようにSNMP設定を構成できます。トラップが生成されると、NMSに送信され、トラップオブジェクトの一部として次のフィールドが返されます。

注:

デフォルトでは、プールコーディネーターホスト上のSNMPエージェントは、UDPポート162を使用してNMSにトラップを送信します。

オブジェクト識別子 (OID) フィールド名 タイプ 説明
1.3.6.1.4.1.60953.1.10.1.1 operation 文字列 次のいずれかの値になります: add または del。トラップがXenServerによって生成され、NMSに送信された場合(XenCenterでもアラートが作成されます)は operationadd となり、アラートが破棄された場合(たとえば、アラートを無視した場合)は del となります。
1.3.6.1.4.1.60953.1.10.1.2 ref 文字列 トラップオブジェクトの参照。
1.3.6.1.4.1.60953.1.10.1.3 uuid 文字列 トラップオブジェクトのUUID。
1.3.6.1.4.1.60953.1.10.1.4 name 文字列 トラップオブジェクトの名前。
1.3.6.1.4.1.60953.1.10.1.5 priority 整数 トラップの重大度。次のいずれかの値になります: 1: 致命的、2: 重大、3: 警告、4: 軽微、5: 情報、others: 不明。
1.3.6.1.4.1.60953.1.10.1.6 class 文字列 生成されたトラップのカテゴリ。次のいずれかの値になります: VMHostSRPoolVMPPVMSSPVS_proxyVDI、またはCertificate
1.3.6.1.4.1.60953.1.10.1.7 obj-uuid 文字列 フィールドclassのさまざまなクラスのxapiオブジェクトUUID。
1.3.6.1.4.1.60953.1.10.1.8 timestamp 文字列 トラップが生成された時刻。
1.3.6.1.4.1.60953.1.10.1.9 body 文字列 フィールド name に関する詳細情報。

前提条件

  • プール内のすべてのホストは、同じXenServerバージョンを実行している必要があり、このバージョンにはSNMPプラグインが含まれている必要があります。

    注記:

    XenCenter®でSNMPタブが表示されない場合、それはホストまたはプールメンバーがSNMPをサポートするXenServerバージョンを実行していないためである可能性があります。ホストまたはプールを最新バージョンのXenServerに更新してください。

  • 使用しているNMSはSNMPv2cまたはSNMPv3をサポートしている必要があります。

  • NMSとXenServerはネットワーク接続されている必要があります。

制約事項

  • プール全体またはプールの一部ではないスタンドアロンホストのSNMP設定を構成できます。現在、プール内の個々のホストのSNMP設定を構成することはできません。
  • SNMPが有効になって構成されているプールにホストを追加した場合、XenCenterはプールのSNMP設定を新しいホストに自動的に適用しません。新しいホストを追加した後、プールでSNMP設定を再構成するか、新しいホストをプールに追加する前に同じSNMP設定で構成する必要があります。

    注:

    新しいホストを追加した後、プールでSNMP設定を再構成する際は、ホストが稼働中でメンテナンスモードではないことを確認してください。

  • Citrix Hypervisor 8.2 CU1からXenServer 8.4へのローリングプールアップグレードを実行する前、またはXenServerホストとプールに更新を適用する前に、以前に手動で変更していて必要な場合は、以下の構成ファイルをバックアップしてください。

    • /etc/snmp/snmpd.xs.conf
    • /etc/sysconfig/snmp
    • /var/lib/net-snmp/snmpd.conf
  • SNMPエージェントがオフラインの場合、トラップは生成できません。たとえば、SNMPエージェントが再起動されたり、プールコーディネーターが再起動または再指定されたりした場合などです。

xe CLIを使用してSNMPを構成する

xe CLIまたはXenCenterを使用してSNMPを構成できます。XenCenterを使用してSNMPを構成する方法の詳細については、「SNMPを使用したホストおよびdom0リソースの監視」を参照してください。

result オブジェクト

SNMPを構成する際、すべての応答はJSON形式で返されます。コマンドが正常に実行されると、キーと値のペア "code": 0 が返されます。一部のコマンド(get-config コマンドなど)は、result と呼ばれるネストされたJSONオブジェクトを返します。result JSONオブジェクトは、SNMP構成を更新するために使用される set-config コマンドにも必要です。

result JSONオブジェクトは、次のオブジェクト commonagent、および nmss で構成されています。

common

フィールド 許可される値 デフォルト値
enabled no (SNMPサービスを無効にする) または yes (SNMPサービスを有効にする) no
debug_log no (デバッグログを無効にする) または yes (デバッグログを有効にする) no
max_nmss N/A (このフィールドは読み取り専用で、サポートされるNMSの最大数を指定します) 1

agent

フィールド 許可される値 デフォルト値
v2c no (SNMPv2cを無効にする) または yes (SNMPv2cを有効にする) yes
community COMMON_STRING_TYPE (注1を参照) public
v3 no (v3を無効にする) または yes (v3を有効にする) no
user_name COMMON_STRING_TYPE (注1を参照)  
authentication_password COMMON_STRING_TYPE (長さ >= 8) (注1を参照)  
authentication_protocol MD5 または SHA  
privacy_password COMMON_STRING_TYPE (長さが8以上) (注1を参照)  
privacy_protocol DES または AES  
engine_id N/A (このフィールドは読み取り専用であり、SNMPエージェントが初めて起動したときに生成されます)  

nmss

フィールド 許可される値 デフォルト値
uuid NMS UUID (これはNMSトラップレシーバーを設定する際に設定し、この値はプール内のすべてのホストで一貫している必要があります)  
address NMS IPv4 アドレスまたはホスト名 (FQDN)  
port 1 から 65535 まで 162
v2c no (SNMPv2cを無効にする)、yes (SNMPv2cを有効にする)、またはSNMPv2cまたはv3のいずれかをサポートする。 yes
community COMMON_STRING_TYPE (注1を参照) public
v3 no (v3を無効にする)、yes (v3を有効にする)、またはSNMPv2cまたはSNMPv3のいずれかをサポートする。 no
user_name COMMON_STRING_TYPE (注1を参照)  
authentication_password COMMON_STRING_TYPE (長さが8以上の場合) (注1を参照)  
authentication_protocol MD5 または SHA  
privacy_password COMMON_STRING_TYPE (長さが8以上の場合) (注1を参照)  
privacy_protocol DES または AES  

注記:

  1. COMMON_STRING_TYPE は、以下の要件を満たす文字列を指します:
    • 文字、数字、ハイフン (-)、ピリオド (.)、シャープ記号 (#)、アットマーク (@)、等号 (=)、コロン (:)、またはアンダースコア文字 (_) の任意の組み合わせ。
    • 長さは6文字から32文字まで(両端を含む)。
  2. パスワードは、XenServer のどの構成ファイルにも平文で保存されません。パスワードはローカライズされたキーに変換されて保存されます。get-config コマンドは、パスワードをアスタリスク (*) で構成される非表示の定数として表示します。

SNMP サービスを構成する

SNMP サービスのステータスを取得する:

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=status
<!--NeedCopy-->

SNMP サービスを開始、停止、または再起動する:

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=<operation>
<!--NeedCopy-->

ここで、operationstartstop、または restart です。

SNMP構成の詳細を取得する:

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=get-config
<!--NeedCopy-->

成功した場合、このコマンドはキーと値のペア "code": 0 と、SNMPサービスの構成詳細を含む result JSONオブジェクトを返します。例:

"code": 0,
  "result": {
    "common": {
      "enabled": "no",
      "debug_log": "no",
      "max_nmss": 1
    },
    "agent": {
      "v2c": "yes",
      "v3": "no",
      "community": "public",
      "user_name": "",
      "authentication_password": "",
      "authentication_protocol": "",
      "privacy_password": "",
      "privacy_protocol": "",
      "engine_id": "<engine_id>"
    },
    "nmss": []
  }
<!--NeedCopy-->

result JSONオブジェクトを任意のテキストエディターにコピーし、ファイルからすべての改行文字 (\n) を削除します。フィールドをSNMP構成の詳細で更新します。NMSのドキュメントを参照し、nmss オブジェクトに必要なフィールドの値を指定して、NMSを構成します。詳細については、上記の オブジェクト を参照してください。

SNMPサービスを構成するには、set-config コマンドを実行し、編集した result JSONオブジェクトを args:config パラメーターの値として指定します。

SNMP構成を設定する:

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=set-config args:config='<result>'
<!--NeedCopy-->

ここで、result は、コピーして編集した get-config コマンドから返された result JSONオブジェクトです。

注記:

プール全体に対してSNMPを構成するには、プール内の各ホストに対して set-config コマンドを実行する必要があります。

構成変更が成功した場合、コマンドはキーと値のペア "code": 0 を返します。構成変更が失敗した場合、set-config コマンドはエラーが発生したことを示す以下のいずれかのキーと値のペアを返します。

  • "code": 1: 一般的なエラー文字列。例: 不明な例外。
  • "code": 2: エラー文字列 (パラメーターが不足しています)。
  • "code": 3: message オブジェクトをリストとして返します。各要素は [field_path, key, value, error string] の形式です。

指定されたトラップレシーバー情報が正しいことを確認するために、NMSにテストSNMPトラップを送信することもできます。

テストSNMPトラップを送信する:

xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=send-test-trap args:config='{"nmss":[{"uuid":"<uuid>","address":"<address>","port":162,"v2c":"yes","v3":"no","community":"public","user_name":"<user_name>","authentication_password":"<authentication_password>","authentication_protocol":"<authentication_protocol>","privacy_password":"<privacy_password>","privacy_protocol":"<privacy_protocol>"}]}'
<!--NeedCopy-->

このコマンドは、TEST_TRAPmsg_nameThis is a test trap from XenServer pool "<pool name>" to verify the NMS Trap Receiver configuration.msg_bodyを付けて、テストトラップをNMSに送信します。

テストトラップを受信しない場合は、SNMP設定を再度確認してください。失敗した場合、send-test-trapコマンドは、エラーが発生したことを示す以下のキーと値のペアのいずれかを返します。

  • "code": 1: 一般的なエラー文字列。例: 不明な例外。
  • "code": 2: エラー文字列 (パラメータが不足しています)。
  • "code": 3: messageオブジェクトをリストとして返します。各要素は[field_path, key, value, error string]の形式です。
  • "code": 4: messageオブジェクトをリストとして返します。各要素は[nms address, nms port, error string]の形式です。
SNMP を使用してホストと dom0 のリソースを監視する