Zabbix 5.0でIPMI監視を追加する

# 目標
- IPMI対応のホストを追加する
- センサー情報のアイテムを追加する
- トリガーを追加する

# 前提
- zabbixサーバはインストール済
- ipmitoolはインストール済
- IPMI監視側設定は完了している（今回はユーザー・パスワード認証）

# ホストの追加

- lan情報を取得（ホスト設定の認証アルゴリズム、特権レベルを取得）

```
$ ipmitool -H XXX.XXX.XXX.XXX -U YYYYYYY -P ZZZZZZZZ -I lanplus lan print
Set in Progress         : Set Complete
Auth Type Support       : MD5 
Auth Type Enable        : Callback : MD5 
                        : User     : MD5 
                        : Operator : MD5 
                        : Admin    : MD5 
                        : OEM      : MD5 
（略）
```

インターフェースは接続できるものを選ぶこと。



1. 設定->ホスト から ホストの作成（デフォルトはホストタブ）
2. ホスト名、グループを記入する
3. デフォルトで存在してるインターフェースを削除
4. インターフェースを追加 -> IPMI
5. IPアドレスを入力する![zabbix-host-host.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191441/cea884d3-70a0-22a4-3512-1942ec48306c.png)

6. IPMIタブに移動
7. 認証アルゴリズム、特権レベルをipmitoolで取得した情報を設定する
8. ユーザー名、パスワードは事前に設定したものを設定する![zabbix-host-ipmi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191441/f962d5ca-4641-c360-270c-377c610c3c5f.png)

# アイテムの追加
IPMIのアイテム追加は、公式ドキュメントだとdiscoveryの項目にしかみあたらないので、ちょっと見つけにくいです。

アイテムの追加などは基本テンプレートから行うのがzabbixの作法なのかもしれないので、ここで行ってるアイテム追加方法はエレガントではないのかもしれない。
（まだzabbix触り初めて日が浅いのでそのような指摘は歓迎）


まず親アイテムの作成を行う(sensor情報を全取得するアイテム)

1. ホスト -> アイテム からアイテムの作成
2. 親アイテムの名前を設定する（ipmi.get等）
3. タイプをIPMIエージェントにする。
4. キーを選択、ipmi.getにする
5. データ型を文字列にする![zabbix-item-item.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191441/f5e0b80e-6a7a-7a89-4acb-96bc9d97bcba.png)
6. テストを開く
7. 値の取得とテストでデータが取れることを確認する![zabbix-item-test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191441/398b5b01-6537-0e97-7f2e-ea18e10152bb.png)
8. 追加ボタンでアイテムを作成する

次に個々のキーの値を取り出すアイテムを追加する。
キーの確認はipmitoolで行う

```
$ ipmitool -H XXX.XXX.XXX.XXX -U YYYYYYY -P ZZZZZZZZ -I lanplus sensor
CPU1 Temperature | 44.000     | degrees C  | ok    | 0.000     | 0.000     | 0.000     | 91.000    | 94.000    | 97.000    
CPU2 Temperature | 45.000     | degrees C  | ok    | 0.000     | 0.000     | 0.000     | 91.000    | 94.000    | 97.000    
DIMMA1_Temp      | 46.000     | degrees C  | ok    | 0.000     | 0.000     | 0.000     | 81.000    | 83.000    | 85.000    
（略）
```
今回はCPU1 Temperatureのアイテムを作成する
1. ホスト -> アイテム からアイテムの作成
2. 名前を```IPMI value for sensor CPU1 Temperature```に設定する
3. タイプを依存アイテムにする
4. キーを```ipmi_sensor[CPU1 Temperature]```にする
5. マスターアイテムを上記で作成した親アイテムとする。
5. データ型を数値（浮動小数）にする![zabbix-item-slave-item.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191441/978925a1-f50a-d171-8c0c-295667343c50.png)
6. 保存前処理タブに移動する
7. 名前をJSON Path、パラメータを```$.[?(@.id=='CPU1 Temperature')].value.first()```に設定する![zabbix-item-slave-preprocess.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191441/967734ab-2783-a36d-3a01-3f259423ea65.png)
8. 追加ボタンでアイテムを作成する
![zabbix-item-list.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191441/43e46183-992a-2f13-92f0-c2b7c2badc2d.png)

# トリガーの追加
1. ホスト -> トリガー からトリガーの作成
2. 名前を設定
3. 深刻度を設定
4. 作成済のアイテムから条件式を設定```{IPMI-device:ipmi_sensor[CPU1 Temperature].last()}>91.0```
5. 追加ボタンでトリガーを作成する![zabbix-trigger.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191441/c4d6c4c1-417c-c598-534c-f5ee0c8cfd7e.png)

# 参考

https://www.zabbix.com/documentation/current/manual/discovery/low_level_discovery/ipmi_sensors