⏱この記事を読むのに必要な時間は約 13 分です。
この記事はNutanix Advent Calendar 2019 2枚目の12/25分です🎄
今年のNutanix Advent Calendarはなんと4枚!
ご参加いただいた皆さま、ありがとうございました!
① adventar.org/calendars/4001
② adventar.org/calendars/4014
③ adventar.org/calendars/4037
④ adventar.org/calendars/4475
これを踏まえて、1月にはNutanix Meetupを東京・大阪で行います!テーマはズバリ、『アドベントカレンダーお疲れさまでした!新年ライトニングトーク大会』です🎉
アドベントカレンダーを執筆いただいた皆さんに、
さらにLT登壇までしていたきます🙇
アドベントカレンダーを読んでいただいた方も、
ぜひお気軽にご参加ください!🍻🍕
東京・大阪どちらもNutanixオフィスのある場所での開催です。
Nutanix Meetup #48
https://nutanix.connpass.com/event/160285/
Nutanix Meetup #49 in Osaka
https://nutanix.connpass.com/event/160287/
さて、宣伝はここまでで↓が本題となります。
————————–
みなさん、自動化してますか?
自動化といえばCAPS(Chef, Ansible, Puppet, SaltStack)に代表される構成管理ツールを用いたInfrastructure as Code(IoC)が注目されていますね。
NutanixもCalmという、VMやアプリケーションのプロビジョニングおよび周辺オペレーションを自動化するためのツールを提供していますが、今回はよりお手軽なオートメーション機能である『X-Play』(クロスプレイ)について紹介します。
X-Playとは
X-Playは、Prism Centralに組込まれた「Codeless Task Automation」(コード記述不要のタスク自動化)を行うための機能です。
Codelessのため複雑な条件分岐を行うことはできませんが、あらかじめ定義された「アクション」(操作)を組み合わせて「プレイブック」と呼ばれる手順書のようなものを非常に簡単に作成できます。
またプレイブックには「トリガー」と呼ばれる、プレイブックの実行条件を設定でき、タスクを自動化することができます。
前提条件
Prism Central: 5.11 以降
今回は、2019年12月24日時点の最新版である、Prism Central 5.11.2をベースに記述しています。
ハイパーバイザー: AHV, ESXi, Hyper-V(仮想マシンアクションを除く)
ライセンス: Prism Pro
トリガー
現時点でのトリガーは、[マニュアル]および[アラート]の2つだけです。
マニュアルトリガー
マニュアルトリガーは、Prism CentralのUI上から、手動でプレイブックを実行するためのトリガーです。
アラートトリガー
アラートトリガーは、Prism Central上でアラートが通知された時点でプレイブックを実行するためのトリガーです。
Prism Centralのアラートは、Prism Central自身が通知するものと、Prism Central管理配下のPrism Elementから転送されるものが存在しますが、両方に対応します。
Prism Centralには、Prism Centralが取得している任意のメトリックを対象としたアラートを作成する機能があります。カスタムアラートはPrism Starterライセンスでも利用可能です。
[補足2]X-Stream
X-Playそのものではありませんが、アラートに関連する機能として、アプリケーション関連のメトリック収集機能(X-Stream)が現在開発中です。過去の.NEXT ConferenceではApplication Aware Sensorsと呼ばれていました。これまでのPrismでは、仮想HW、ハイパーバイザー、分散ストレージファブリック、物理HWなど、低いレイヤーの情報しか取得できませんが、X-Streamにより、ゲストOS上のアプリケーションの負荷や遅延などのメトリックでアラート作成が可能となり、X-Playの活用の幅が広がりそうです。
アクション
Prism Central 5.11.2 時点では下記の5カテゴリ、21個のアクションが存在します。
仮想マシンアクション
仮想マシンに対する操作を行います。
- Power on VM
仮想マシンの電源をオンにする。 - Power off VM
仮想マシンの電源をオフにする。ゲスト内からのシャットダウン(要Nutanix Guest Tools)、ACPIシャットダウン、強制オフが選択可能。 - VM add CPU
仮想マシンにvCPUを追加する。上限値が指定可能。 - VM add Memory
仮想マシンにメモリを追加する。上限値が指定可能。 - VM Reduce CPU
仮想マシンのvCPUを減らす。下限値が指定可能。仮想マシンは事前に電源オフが必要。 - VM Reduce Memory
仮想マシンのメモリを減らす。下限値が指定可能。仮想マシンは事前に電源オフが必要。 - VM Snapshot
仮想マシンのスナップショットを作成する。
なお、アクションを行う対象のVMは「アラートの対象となったVM」だけでなく、特定のVMを決め打ちすることも可能です。決め打ちは、仮想マシンアクションではあまり使うことが無さそうですが、後述の「実行アクション」ではVMに対してSSH/Powershellを実行できるので、そちらでは色々と活用できそうです。
通信アクション
任意のメッセージを外部に送信します。
- Email
Emailを送信する。後述のレポートアクションと組み合わせた場合、リソース需要予測レポートの添付が可能。 - Slack
Slackで指定したChannelにメッセージを送信する。
送信するメッセージには、トリガーや先に実行されたアクションの情報、アクションの実行結果などを埋め込むことができます。例えば下のスクリーンショットは、[アラートトリガー]を元に[VM SSH]→[Slack]という2つのアクションを実行する際に、Slackアクションのメッセージに埋め込み可能なパラメータを表示したものです。
使用例としては、「CPU不足」のアラートが上がったVMに、SSHで”top -n 1″(CPU使用率の高いプロセスの一覧表示)を実行して、Alert Name、Creation Time(アラート作成時間)、Source Entity Name(VM名)、Standard Output(topコマンド実行結果表示)を運用監視メンバーのSlackチャンネルに送る、などが考えられます。
なお、ここではパラメータを通信アクションのメッセージに埋め込む、という例を紹介しましたが、パラメータの埋め込みは後述の実行アクションでも可能です。
アラートアクション
アラートに関連した操作を行います。
- Acknowledge Alert
アラートを確認済みにする。 - Resolve Alert
アラートを解決済みにする。 - Send to ServiceNow
アラートをServiceNowに送る。
詳細はNutanixのEnterprise Cloud Solution ArchitectであるSho Uchidaさん(@shocnt)のQiita記事ServiceNowとNutanixの連携 その2 アラート連携をご覧ください。
レポートアクション
Prism Proのリソース需要予測レポートに関する操作を行います。
- Generate Forcast Report
リソース需要予測レポートを生成する。Prism Central内に保存するだけでなく、X-PlayのEmailアクションに添付して送信できる。
待機アクション
次のアクションを行うまでの待機を設定します。
- Wait for Some Time
指定した分数待機する。その後、次のアクションを実行するか、プレイブックを終了する(待機時間内であれば手動での再開が可能)か選択できる。 - Wait Until Day of Month
1か月以内の指定した日時(月は指定できず、日と時間のみ指定)まで待機する。その後、次のアクションを実行するか、プレイブックを終了する(待機時間内であれば手動での再開が可能)か選択できる。「その月の最終日」「その月の最終日の1日前」「その月の最終日の2日前」といった指定も可能。 - Wait Until Day of Week
1週間以内の指定した曜日の指定した時間まで待機する。その後、次のアクションを実行するか、プレイブックを終了する(待機時間内であれば手動での再開が可能)か選択できる。
実行アクション
任意の操作をリモートで実行します。
- IP Address Powershell
指定したIPアドレスに接続し、Powershellを実行する。Return Code, Standard Error, Standard Outputを他のアクションのパラメータとして使用可能。 - VM Powershell
指定したNutanix上のVMに接続し、Powershellを実行する。Return Code, Standard Error, Standard Outputを他のアクションのパラメータとして使用可能。 - IP Address SSH
指定したIPアドレスにSSH接続し、スクリプトを実行する。Return Code, Standard Error, Standard Outputを他のアクションのパラメータとして使用可能。 - VM SSH
指定したNutanix上のVMにSSH接続し、スクリプトを実行する。Return Code, Standard Error, Standard Outputを他のアクションのパラメータとして使用可能。 - REST API
指定したURLにREST APIを実行する。GET, PUT, POST, DELETEメソッドが使用可能。Response Status Code, Response Header, Response Bodyを他のアクションのパラメータとして使用可能。
デモ動画
YoutubeにあるX-Playのデモ動画を紹介します。
動画内で行っていることを箇条書きしているので、併せてご覧ください。
Nutanix X-Play
- カスタムアラートを作成(I/O Bandwidth)
- Playbookの作成を開始
- アラートトリガーを設定
- Slackアクションを追加
- Playbookを保存
- sarコマンドでI/O負荷を生成
- PrismでI/O負荷が高くなったことを確認
- Slackにメッセージを受信したことを確認
Nutanix X-Play Add Memory(※準備編)
- Playbookの作成を開始
- アラートトリガーを設定
VM Memory High Usageを検知するカスタムアラートを使用 - VM Snapshotアクションを追加
Snapshotの保持期間は1日に設定 - VM Add Memoryアクションを追加
1回あたり2GiBずつ追加し、最大16GiBまでに設定 - Emailアクションを追加
- Acknowledge Alertアクションを追加
- Playbookを保存
- xplayというVMの現在のリソースを確認(メモリ4GiB)
- xplay VMにSSHでアクセスし、stressツールでメモリ使用率を上げる
Nutanix X-Play Add Memory Results(※結果編)
- Prism Centralで仮想マシン一覧を表示
- xplayというVMを選択し、アラートが1つ上がっていたことを確認
- xplayというVMのメモリ割り当てが6GiBに増えていることを確認
- アラートの内容を確認
- アラートがAcknowledged(確認済み)になっていることを確認
- Recovery Point(スナップショット)が作成されていることを確認
Nutanix X-Play Alert Integration with ServiceNow
- X-PlayデフォルトのSend to ServiceNowアクションをクローンし、一部のパラメータを入力済みにしたServiceNow用アクションを作成
- Playbookの作成を開始
- アラートトリガーを設定(Compression Disabled)
- 1で作成したServiceNow用アクションを追加
- Playbookを保存
- ServiceNow連携用のPlaybookをインポート
- ServiceNowの管理画面で、この時点ではNutanixに関するイベントルールが無いことを確認
- Nutanix対応用のXMLファイルをアップロード
- Nutanixに関するイベントルールが作成されたことを確認
- Incindent Rule(アラートによるインシデントの作成)を有効化
- stressツールでVMに負荷を掛け、Prism Centralのアラートを生成
- X-PlayによりアラートがServiceNowに渡され、インシデントが作成されたことを確認
まとめ
今回はPrism Central 5.11で追加されたX-Playについて紹介しました。つい先日、Nutanix Community Edition(CE)もAOS 5.11ベースにバージョンアップしました。CEではPrism Proの機能も無償で使えますので、Prism Centralを立てられるリソースがあれば、是非試してい頂ければ幸いです。
参考資料
おまけ: あったらいいなと思う機能(≒制限事項)
X-PlayはPrism Central 5.11で新規追加された機能であるため、まだまだ機能追加の余地があると思います。ここでは、あったらいいな、と思う機能(要するに今できないこと、の裏返しでもあります)をいくつか書いておきたいと思います。
実際に製品に搭載されることがあるかもしれないし、ないかもしれませんね。