[comment]: # ({8402b962-52403269})
# 10 IPMI エージェント

[comment]: # ({/8402b962-52403269})

[comment]: # ({cf103984-2f30e610})
#### 概要

Zabbix では、Intelligent Platform Management Interface (IPMI) デバイスの健全性と可用性を監視できます。IPMI チェックを実行するには、Zabbix サーバーを最初に IPMI サポート付きで[設定](/manual/installation/install#configure-the-sources)する必要があります。

IPMI は、コンピュータシステムのリモート "lights-out" または "out-of-band" 管理のための標準化されたインターフェースです。これにより、いわゆる "out-of-band" 管理カードから、オペレーティングシステムやマシンの電源状態に関係なく、ハードウェアの状態を直接監視できます。

Zabbix の IPMI 監視は、IPMI サポートを備えたデバイス（HP iLO、DELL DRAC、IBM RSA、Sun SSP など）でのみ動作します。

IPMI マネージャープロセスは、IPMI ポーラーによる IPMI チェックをスケジュールします。ホストは常に一度に 1 つの IPMI ポーラーによってのみポーリングされるため、BMC コントローラーへのオープン接続数が削減されます。そのため、BMC コントローラーの過負荷を心配せずに IPMI ポーラーの数を増やすことができます。IPMI マネージャープロセスは、少なくとも 1 つの IPMI ポーラーが起動すると自動的に開始されます。

IPMI チェックに関する[既知の問題](/manual/installation/known_issues#ipmi-checks)も参照してください。

[comment]: # ({/cf103984-2f30e610})

[comment]: # ({5d32b87c-5d32b87c})
#### 設定

[comment]: # ({/5d32b87c-5d32b87c})

[comment]: # ({4f35db5e-4f35db5e})
##### ホストの設定

IPMI チェックを処理するために、ホストを設定する必要があります。<br>
IPMI インターフェイスをを追加し、それぞれの IPアドレス およびポート番号を指定し、IPMI 認証パラメーターを定義する必要があります。

詳細は、[configuration of hosts](/manual/config/hosts/host) を参照してください。

[comment]: # ({/4f35db5e-4f35db5e})

[comment]: # ({f7bb9e76-f7bb9e76})
##### Server の設定

デフォルトでは、ZabbixサーバはIPMIポーラーを起動するように設定されていないため、IPMIアイテムを追加しても動作しません。<br>
これを変更するには、Zabbixサーバ設定ファイル([zabbix_server.conf](/manual/appendix/config/zabbix_server)) を root ユーザで開き、<br>
次の行を探します。

    # StartIPMIPollers=0

この行をアンコメントし、ポーラー数を 3 に設定すると、次のようになります。

    StartIPMIPollers=3

ファイルを保存し、その後 zabbix_server を再起動します。

[comment]: # ({/f7bb9e76-f7bb9e76})

[comment]: # ({b0db4658-b0db4658})
##### item の設定

ホストレベルで[configuring an item](/manual/config/items/item)を行う場合:

- *Type*として 'IPMIエージェント' を選択します。
- ホスト内で一意である item [key](/manual/config/items/item/key) (例えば、ipmi.fan.rpm)を入力します。
- *Host interface* には、関連するIPMIインターフェース(IPアドレスおよびポート番号)を選択します。
    IPMIインターフェースはホスト上に存在する必要があることに注意してください。
- IPMI センサー* (Dell Poweredge の 'FAN MOD 1A RPM' など)  からメトリックを取得するように指定します。
    デフォルトでは、センサー IDを指定する必要があります。接頭辞を使用することも可能です。
    - `id:` - センサーの ID を指定します。
    - `name:` - センサーのフルネームを指定します。
        これは、フルネームを指定することによってのみセンサを区別できる場合に役立ちます。
- それぞれの情報の種類を選択します(この場合は、'Numeric (float)' 
    ディスクリートセンサーの場合は'Numeric (unsigned)'）、単位（多くの場合'rpm'）、およびその他の必要な項目属性を選択します。

[comment]: # ({/b0db4658-b0db4658})

[comment]: # ({20080418-af2b187b})
##### サポートされているチェック

IPMIエージェントは、組み込みアイテム **ipmi.get** をサポートしており、IPMIセンサー関連の情報を返します。これは、[IPMIセンサーのディスカバリ](/manual/discovery/low_level_discovery/examples/ipmi_sensors#overview) に使用できます。<br>
戻り値: *JSON object*

[comment]: # ({/20080418-af2b187b})

[comment]: # ({e085a816-1e03516a})
#### タイムアウトとセッション終了

IPMIメッセージのタイムアウトと再試行回数は、OpenIPMIライブラリで定義されています。
OpenIPMIの現在の設計上、これらの値をZabbixで設定可能にすることはできず、
インターフェースレベルでもアイテムレベルでも設定できません。

LAN向けのIPMIセッション非アクティブタイムアウトは60 +/-3秒です。現在、
OpenIPMIではActivate Sessionコマンドを定期的に送信する実装はできません。
特定のBMCに対して、BMCで設定されたセッションタイムアウトより長い間、
ZabbixからのIPMIアイテムチェックが行われなかった場合、タイムアウト経過後の
次回のIPMIチェックは、個々のメッセージタイムアウト、再試行、または受信エラーにより
タイムアウトします。その後、新しいセッションが開かれ、BMCの完全な再スキャンが
開始されます。新しいセッションを管理するために、新しいUDPポートが開かれる場合も
あります。非アクティブ状態とは、送信要求と受信応答の両方が存在しないことを
意味します。BMCの不要な再スキャンを避けたい場合は、IPMIアイテムのポーリング間隔を、
BMCで設定されたIPMIセッション非アクティブタイムアウトより短く設定することを
推奨します。

[comment]: # ({/e085a816-1e03516a})

[comment]: # ({e74a6a61-3ea36861})
#### IPMI ディスクリートセンサーに関する注意事項

ホスト上のセンサーを見つけるには、**DebugLevel=4** を有効にして Zabbix サーバーを起動します。数分待ってから、Zabbix サーバーのログファイルでセンサー検出レコードを確認します。

    $ grep 'Added sensor' zabbix_server.log
    8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:7 id:'CATERR' reading_type:0x3 ('discrete_state') type:0x7 ('processor') full_name:'(r0.32.3.0).CATERR'
    8358:20130318:111122.170 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'CPU Therm Trip' reading_type:0x3 ('discrete_state') type:0x1 ('temperature') full_name:'(7.1).CPU Therm Trip'
    8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'System Event Log' reading_type:0x6f ('sensor specific') type:0x10 ('event_logging_disabled') full_name:'(7.1).System Event Log'
    8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'PhysicalSecurity' reading_type:0x6f ('sensor specific') type:0x5 ('physical_security') full_name:'(23.1).PhysicalSecurity'
    8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'IPMI Watchdog' reading_type:0x6f ('sensor specific') type:0x23 ('watchdog_2') full_name:'(7.7).IPMI Watchdog'
    8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'Power Unit Stat' reading_type:0x6f ('sensor specific') type:0x9 ('power_unit') full_name:'(21.1).Power Unit Stat'
    8358:20130318:111122.171 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Ctrl %' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.1).P1 Therm Ctrl %'
    8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:16 id:'P1 Therm Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(3.2).P1 Therm Margin'
    8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 2' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 2'
    8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:13 id:'System Fan 3' reading_type:0x1 ('threshold') type:0x4 ('fan') full_name:'(29.1).System Fan 3'
    8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'P1 Mem Margin' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).P1 Mem Margin'
    8358:20130318:111122.172 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'Front Panel Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Front Panel Temp'
    8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:15 id:'Baseboard Temp' reading_type:0x1 ('threshold') type:0x1 ('temperature') full_name:'(7.6).Baseboard Temp'
    8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +5.0V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +5.0V'
    8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +3.3V STBY' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V STBY'
    8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:9 id:'BB +3.3V' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +3.3V'
    8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.5V P1 DDR3' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.5V P1 DDR3'
    8358:20130318:111122.173 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:17 id:'BB +1.1V P1 Vccp' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.1V P1 Vccp'
    8358:20130318:111122.174 Added sensor: host:'192.168.1.12:623' id_type:0 id_sz:14 id:'BB +1.05V PCH' reading_type:0x1 ('threshold') type:0x2 ('voltage') full_name:'(7.1).BB +1.05V PCH'

IPMI センサーのタイプと状態をデコードするには、
[IPMI 2.0 specifications](https://www.intel.com/content/dam/www/public/us/en/documents/product-briefs/ipmi-second-gen-interface-spec-v2-rev1-1.pdf)
のコピーを利用できます（IPMI 仕様については、[今後の更新は予定されていない](http://www.intel.com/content/www/us/en/servers/ipmi/ipmi-specifications.html)
点に注意してください）。

最初に確認すべきパラメータは "reading\_type" です。仕様書の "Table 42-1,
Event/Reading Type Code Ranges" を使用して、"reading\_type" コードをデコードします。例のセンサーの大半は
"reading\_type:0x1" で、これは "threshold" センサーを意味します。"Table 42-3, Sensor
Type Codes" では、"type:0x1" は温度センサー、"type:0x2" は電圧センサー、"type:0x4" はファンなどを意味することが示されています。Threshold センサーは、温度、電圧、毎分回転数のような連続的なパラメータを測定するため、"analog" センサーと呼ばれることもあります。

別の例として、"reading\_type:0x3" のセンサーがあります。"Table 42-1,
Event/Reading Type Code Ranges" によると、読み取りタイプコード 02h-0Ch は "Generic Discrete" センサーを意味します。ディスクリートセンサーは最大 15 個の状態（言い換えると、最大 15 個の意味のあるビット）を持ちます。たとえば、
'CATERR' センサーの "type:0x7" については、"Table 42-3, Sensor Type Codes"
でこのタイプが "Processor" を意味し、各ビットの意味は次のとおりであることが示されています: 00h（最下位ビット） - IERR、01h - Thermal Trip などです。

この例には "reading\_type:0x6f" のセンサーもいくつかあります。これらのセンサーについては、"Table 42-1, Event/Reading Type Code Ranges" で、ビットの意味をデコードするために "Table 42-3, Sensor Type Codes" を使用するよう案内されています。たとえば、'Power Unit Stat' センサーは "type:0x9" で、これは "Power Unit" を意味します。オフセット 00h は "PowerOff/Power Down" を意味します。言い換えると、最下位ビットが 1 の場合、サーバーの電源はオフです。このビットをテストするには、マスク '1' を指定した [``bitand``](/manual/appendix/functions/bitwise#bitand) 関数を使用できます。トリガー式は次のようになります。

    bitand(last(/www.example.com/Power Unit Stat,#1),1)=1

これは、サーバーの電源オフを警告するためのものです。

[comment]: # ({/e74a6a61-3ea36861})

[comment]: # ({761eb9da-761eb9da})
##### OpenIPMI-2.0.16, 2.0.17, 2.0.18, 2.0.19 のディスクリートセンサーの名前に関する注意事項

OpenIPMI-2.0.16, 2.0.17, 2.0.18 のディスクリートセンサーの名前には"`0`" (または他の数字や文字) を<br>
末尾に付加していることがよくあります。<br>
例えば、`ipmitool` と OpenIPMI-2.0.19 では、センサーの名前は "`PhysicalSecurity`" や "`CATERR`" のように表示されます。<br>
OpenIPMI-2.0.16, 2.0.17, 2.0.18 では "`PhysicalSecurity0`" または "`CATERR0`" と表示されます。<br>

OpenIPMI-2.0.16、2.0.17、2.0.18を使用してZabbixサーバでIPMI item を設定する場合、<br>
IPMIエージェントアイテムの*IPMI sensor*フィールドにこれらの名前を0として使用してください。<br>
ZabbixサーバをOpenIPMI-2.0.19(またはそれ以降)を使用する新しいLinuxディストリビューションにアップグレードした場合、<br>
これらのIPMIセンサーのアイテムは「NOT SUPPORTED」になります。そのため<br>
IPMIセンサー名を変更し（末尾の'0'を削除）、再び "Enabled "になる前に、しばらく待つ必要があります。

[comment]: # ({/761eb9da-761eb9da})

[comment]: # ({01ffa3dc-2adee003})
##### しきい値センサーとディスクリートセンサーが同時に利用可能な場合の注意事項

一部のIPMIエージェントは、同じ名前でしきい値センサーとディスクリートセンサーの両方を提供します。常にしきい値センサーが優先されます。

[comment]: # ({/01ffa3dc-2adee003})

[comment]: # ({69164d8f-69164d8f})
##### 接続終了時の注意事項

IPMIチェックが行われなかった場合(何らかの理由: ホストのIPMI項目が全て無効/サポートされていない、<br>
ホストが無効/削除された、ホストがメンテナンス中であるなど)<br>
Zabbix server / proxy を起動した時間に応じて3～4時間後にZabbix server / proxy からIPMI接続が切断されます。

[comment]: # ({/69164d8f-69164d8f})
