SNMP を使用してホストと dom0 のリソースを監視する
Pool Admin ロールを使用すると、SNMP を使用して、XenServer® ホストと dom0 (ホストの制御ドメイン) によって消費されるリソースをリモートで監視できます。ネットワーク管理システム (NMS) とも呼ばれる SNMP マネージャーは、XenServer ホストで実行されている SNMP エージェントにクエリ要求を送信します。SNMP エージェントは、さまざまなメトリックで収集されたデータを NMS に送り返すことで、これらのクエリ要求に応答します。収集できるデータは、管理情報ベース (MIB) と呼ばれるテキストファイル内のオブジェクト識別子 (OID) によって定義されます。OID は、CPU やメモリ使用量など、ネットワークデバイスに関する測定可能な特定の情報を表します。
XenServer で特定のイベントが発生したことを NMS に警告する、エージェントが開始するメッセージであるトラップを設定することもできます。クエリ要求とトラップの両方を使用して、XenServer プールのステータスを監視できます。これらはメトリックオブジェクトおよびトラップオブジェクトとして定義され、XENSERVER-MIB.txt MIB ファイル内の OID によって識別されます。このファイルは XenServer ダウンロードページ からダウンロードできます。次の表に、これらのメトリックオブジェクトとトラップオブジェクトに関する情報を示します。
メトリックオブジェクト
次の表にリストされているメトリックを使用して、XenServer ホストに関する特定の情報を要求できます。これらのメトリックは、SNMP マネージャーが SNMP エージェントにクエリ要求を送信するときに使用されるため、このデータを NMS で表示できます。
これらのメトリックオブジェクトから返されたデータは、NMS または xe CLI から表示できます。xe CLI からメトリックオブジェクトをクエリするには、host-data-source-query または vm-data-source-query を実行し、RRDD データソースを data-source パラメーターの値として指定します。例:
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ビット整数 |
注記:
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 でもアラートが作成されます)は operation が add になります。または、アラートが破棄された場合(たとえば、アラートを無視した場合)は 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 |
文字列 | 生成されたトラップのカテゴリ。以下のいずれかの値になります: VM、Host、SR、Pool、VMPP、VMSS、PVS_proxy、VDI、または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設定を再構成する場合、ホストが稼働中でメンテナンスモードではないことを確認してください。
- SNMPエージェントがオフラインの場合、トラップは生成できません。例えば、SNMPエージェントが再起動された場合や、プールコーディネーターが再起動または再指定された場合などです。
xe CLIを使用してSNMPを構成する
SNMPはxe CLIまたはXenCenterを使用して構成できます。XenCenterを使用してSNMPを構成する方法の詳細については、「SNMPを使用したホストおよびdom0リソースの監視」を参照してください。
resultオブジェクト
SNMPを構成する場合、すべての応答はJSON形式で返されます。コマンドが正常に実行されると、キーと値のペア"code": 0が返されます。一部のコマンド(get-configコマンドなど)は、resultという名前のネストされたJSONオブジェクトを返します。result JSONオブジェクトは、SNMP構成を更新するために使用されるset-configコマンドにも必要です。
result JSONオブジェクトは、次のオブジェクトcommon、agent、および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 |
該当なし (このフィールドは読み取り専用であり、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
|
注記:
- COMMON_STRING_TYPE は、次の要件を満たす文字列を指します。
- 文字、数字、ハイフン (-)、ピリオド (.)、ポンド (#)、アットマーク (@)、等号 (=)、コロン (:)、またはアンダースコア (_) の任意の組み合わせ。
- 長さは 6 文字から 32 文字まで(両端を含む)。
- パスワードは、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-->
ここで、operation は start、stop、または 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_TRAP の msg_name と This 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]の形式です。