IBM Cloud ベアメタルサーバーのIPMIからLog Analysisにsyslogを連携する

IBM Cloudのベアメタルサーバー（Classic）は、物理サーバーを専有利用でき、筐体のIPMI（Intelligent Platform Management Interface）にもアクセスできます。

IPMIでは様々なハードウェア管理を行えます。その中にsyslogの設定箇所があり、外部のsyslogサーバーにIPMIからsyslogを送る事ができます。

IBM Cloudのログ管理・監視サービスであるLog Analysisにはsyslogを受け付ける機能があります。最近（と言ってももう4ヶ月ほど前ですが..）、syslogをプライベートエンドポイントで受け付けることができるようになったため、IPMIからLog Analysisにsyslogを送る設定をしてみます。

IPMIはIBM CloudのプライベートNW（10.x.x.x）上に存在します。Log Analysisのsyslogエンドポイントは当初はパブリック側にしかなく、Gateway Appliance等でルーティングを制御しないとIPMIから送れませんでしたが、プライベートエンドポイントも利用できるようになったため、IPMIからLog Analysisにsyslog連携しやすくなりました。

# ベアメタルのIPMIにアクセス

ベアメタルサーバーの詳細画面で、Remote ManagementのタブにIPMIへのアクセス情報があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59627/3c258964-a5df-8921-a2a1-a9b880089ca9.png)

SSL VPNに接続し、上記画面に記載のIPアドレス、ユーザー名、パスワードでIPMIにログインできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59627/72d2ec7d-6457-3af6-c5fb-cd38336ade78.png)


# IPMIの権限昇格
払い出し直後は、IPMIの権限がOperatorのため、"You don't have privileges to apply for changes or actions"のメッセージで、syslog設定ができません。caseを起票することで、Administrator権限を付与してもらえます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59627/84829039-51a6-977a-4eb0-7fa173c8d702.png)

case依頼例

```
Hello,
I'd like to configure syslog settings on IPMI on my baremetal server.
Could you give me Administorator privilege of IPMI on the following server?

（サーバー名とID）

Thank you,
```

対応しました、とcaseに返事が来た後に再びIPMIにログインすると、Administrator権限になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59627/fc8d86b0-d83d-c887-c6f0-37dcc1a4e93f.png)


# Log Analysicでsyslogサーバーの設定

syslogを受け付けるにあたり、Log Analysis側の設定は下記に記載があります。
https://cloud.ibm.com/docs/log-analysis?topic=log-analysis-syslog

左下の「？」マークから、Install Instructionのウインドウを開き、「syslog」を選びます。
初期状態ではsyslog受付用のポートが割り当てられていないので、「Provision a Port」をクリックしてポートを割り当てます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59627/12941acc-e324-6c6b-faac-1b1a38f5acc7.png)

エンドポイント名とポートが割り当てられました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59627/f7836ed7-77e6-c061-de48-8e22986982af.png)

ただし、Log Analysisの画面上で表示されているエンドポイント（上記の例では、syslog-u.jp-tok.logging.cloud.ibm.com）はパブリックエンドポイントなので、IPMIから直接はアクセスできません。
IPMIからアクセス可能なプライベートエンドポイントは下記を参照します。
https://cloud.ibm.com/docs/log-analysis?topic=log-analysis-endpoints#endpoints_syslog_private_endpoints

なお、上記docsにはtcp用の syslog-a.private.jp-tok.logging.cloud.ibm.com しか載っていません。IPMIのsyslog転送は、udpを使うようなので（最初tcpのエンドポイントを指定しても動きませんでした） 、udp用のsyslog-u.private.jp-tok.logging.cloud.ibm.com を使います。（docsには追記を依頼中です..）

このエンドポイントは、下記のように、プライベートIP（166.9.x.x）に名前解決されます。
なお、この166.9.x.xのプライベートIPはサービスエンドポイントと呼ばれます。Classicから166.9.x.xへのアクセスは、そのアカウントでVRFとサービスエンドポイントが有効になっている必要がありますので、未設定の場合は設定を行なってください。
https://cloud.ibm.com/docs/account?topic=account-vrf-service-endpoint&locale=ja&interface=ui

```
# nslookup syslog-u.private.jp-tok.logging.cloud.ibm.com

Non-authoritative answer:
syslog-u.private.jp-tok.logging.cloud.ibm.com	canonical name = logdna-tokyo-usys.jp-tok.serviceendpoint.cloud.ibm.com.
Name:	logdna-tokyo-usys.jp-tok.serviceendpoint.cloud.ibm.com
Address: 166.9.40.24
Name:	logdna-tokyo-usys.jp-tok.serviceendpoint.cloud.ibm.com
Address: 166.9.42.27

# ping 166.9.40.24
PING 166.9.40.24 (166.9.40.24) 56(84) bytes of data.
64 bytes from 166.9.40.24: icmp_seq=1 ttl=57 time=1.69 ms
64 bytes from 166.9.40.24: icmp_seq=2 ttl=57 time=1.48 ms
^C
# ping 166.9.42.27
PING 166.9.42.27 (166.9.42.27) 56(84) bytes of data.
64 bytes from 166.9.42.27: icmp_seq=1 ttl=63 time=0.679 ms
64 bytes from 166.9.42.27: icmp_seq=2 ttl=63 time=0.531 ms

```

# IPMIでsyslog設定
上記のsyslogサーバーのIPアドレスとポート番号を、IPMIに設定します。IPMIのメニューから、Configuration > Syslogの画面を開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59627/f555c6af-653a-bb1c-baf2-67ff505280c1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59627/c2a59116-4205-658f-34f0-67e2f071dd1b.png)

Enable Syslogのチェックボックスにチェックを入れ、syslogサーバーのFQDNとポート番号を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59627/15c560c0-d54c-6513-5535-0b3fce735172.png)

# テスト
今回、ベアメタルサーバーのOSとして、RHELを導入しています。
このRHELに、ipmitoolが同梱されており、これを使ってテストイベントを発生させる事ができます。

```
# ipmitool -I open event 1
Sending SAMPLE event: Temperature - Upper Critical - Going High
   0 |  Pre-Init  |0000000000| Temperature #0x30 | Upper Critical going high | Asserted
# ipmitool -I open event 2
Sending SAMPLE event: Voltage Threshold - Lower Critical - Going Low
^[OA   0 |  Pre-Init  |0000000000| Voltage #0x60 | Lower Critical going low  | Asserted
# ipmitool -I open event 3
Sending SAMPLE event: Memory - Correctable ECC
   0 |  Pre-Init  |0000000000| Memory #0x53 | Correctable ECC (@DIMMO6(CPU4)) | Asserted
#
```

このテストイベントは、IPMI上のイベントログにも記録されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59627/d4e34f02-fddb-5c64-6ba1-98c540452890.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59627/2bd8b085-11c0-4e98-28a5-5f1e0815a92f.png)

Log Analysisを見ると、syslogイベントが送られてきている事が分かります。送信元は10.192.27.6で、これはIPMIのIPアドレスです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59627/6145e62e-b1b2-1673-5a57-fc98791ebe6a.png)


# 参考
https://www.youtube.com/watch?v=qTdH4Qau8qk

以上