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>
注:
デフォルトでは、NMS はポート 161 を使用して SNMP エージェントに OID クエリ要求を送信します。
| オブジェクト識別子 (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。 operation は、XenServer によってトラップが生成され、NMS に送信された場合(XenCenter でもアラートが作成されます)は 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設定を再構成する際は、ホストが稼働中でメンテナンスモードではないことを確認してください。
-
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オブジェクトは、次のオブジェクト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 |
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 |
注:
-
COMMON_STRING_TYPE は、以下の要件を満たす文字列を指します。
-
文字、数字、ハイフン (-)、ピリオド (.)、ポンド (#)、アットマーク (@)、等号 (=)、コロン (:)、またはアンダースコア (_) の任意の組み合わせの文字。
-
長さは6文字から32文字まで(両端を含む)。
-
-
パスワードは、XenServer のどの構成ファイルにも平文で保存されません。パスワードはローカライズされたキーに変換されて保存されます。
get-configコマンドは、パスワードをアスタリスク (*) で構成される隠された定数として表示します。
SNMP サービスを構成する
SNMP サービスのステータスを取得する:
xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=status
SNMP サービスを開始、停止、または再起動する:
xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=<operation>
ここで operation は
start、stop、または restart です。
SNMP構成の詳細を取得する:
xe host-call-plugin host-uuid=<host-uuid> plugin=snmp fn=get-config
成功した場合、このコマンドはキーと値のペア
"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": []
}
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>'
ここで 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]の形式です。
指定されたトラップレシーバー情報が正しいことを確認するために、テスト SNMP トラップを NMS に送信することもできます。
テスト 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>"}]}'
このコマンドは、
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]の形式です。