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へのアクセス情報があります。
SSL VPNに接続し、上記画面に記載のIPアドレス、ユーザー名、パスワードでIPMIにログインできます。
IPMIの権限昇格
払い出し直後は、IPMIの権限がOperatorのため、"You don't have privileges to apply for changes or actions"のメッセージで、syslog設定ができません。caseを起票することで、Administrator権限を付与してもらえます。
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権限になっています。
Log Analysicでsyslogサーバーの設定
syslogを受け付けるにあたり、Log Analysis側の設定は下記に記載があります。
https://cloud.ibm.com/docs/log-analysis?topic=log-analysis-syslog
左下の「?」マークから、Install Instructionのウインドウを開き、「syslog」を選びます。
初期状態ではsyslog受付用のポートが割り当てられていないので、「Provision a Port」をクリックしてポートを割り当てます。
エンドポイント名とポートが割り当てられました。
ただし、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の画面を開きます。
Enable Syslogのチェックボックスにチェックを入れ、syslogサーバーのFQDNとポート番号を入力します。
テスト
今回、ベアメタルサーバーの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上のイベントログにも記録されます。
Log Analysisを見ると、syslogイベントが送られてきている事が分かります。送信元は10.192.27.6で、これはIPMIのIPアドレスです。
参考
以上