ServiceNowとNutanixの連携 その2 アラート連携【ServiceNow Orlandバージョン対応】

本記事は[Nutanix Advent Calendar 2019 #4](https://adventar.org/calendars/4475) 12/12 分の記事です。そして[前回記事](https://qiita.com/shocnt/items/37a84af4aae6dc231d71)の続きです。

# 本シリーズ(全5回)では
ServiceNow社の提供する開発者インスタンスを用いてシンプルなServiceNow-Nutanixの統合環境を作ることを目指します。

# 本記事(その2)では
前回ご紹介した3つのユースケースのうち1つ目、「ServiceNowのイベント、インシデントとNutanixのアラートの統合」について実装方法をご紹介します。

Prism Proの機能である、X-Playを用いてNutanixのアラート発報を契機にアラート情報をServiceNowに送信します。

# 前提条件
## Nutanix
1. Prism Central v5.11.1 以降
2. Prism Pro ライセンス(X-Play使用のため)
3. AOS/Prism Element 5.9 以降

## ServiceNow
1. Incident Management(com.snc.incident.mim)プラグイン
2. Event Management(com.glideapp.itom.snac)プラグイン

# 手順
## 1. Prism Central側の準備
アラートや管理者のクリックを契機に定義されたアクションを自動実行出来るX-Play(Prism Proライセンスが必要)という機能を使用します。X-Playについて詳しくは[こちら](https://next.nutanix.com/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A9%E3%83%A0-70/nutanix-prism-pro-%E3%81%A8-%E6%96%B0%E6%A9%9F%E8%83%BD-x-play-33140)をご参照下さい。

手動での設定方法、スクリプトによる一括設定の2パターンがあります。
## 1a. 手動での設定方法
### 1a-1. Playbook設定
Prism Centralのダッシュボードから”プレイブック”に移動します。
<img width="1428" alt="スクリーンショット 2019-12-10 1.34.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/c237ef8a-5557-fd73-d469-1768c41c7de2.png">

"プレイブックの作成"ボタンを指定し、トリガとして”Alert”を選択します。"アラートポリシー"欄にServiceNowに送信したいアラートを選択し、”アクションの追加”を指定します。
<img width="1425" alt="スクリーンショット 2019-12-11 13.21.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/b49e0ba6-5a4c-5271-05d4-dbfb5adc6302.png">

定義されたアクションリストから”Send to ServiceNow”を選択します。
<img width="1425" alt="スクリーンショット 2019-12-11 13.21.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/b1c724f9-efaf-0da7-2cee-90ef30ad8ecd.png">

以下を記入し、”保存して閉じる”を指定します。
ServiceNow Instance Name: ServiceNowインスタンス名(https://[こちらの文字列].service-now.com/)
Username: admin
Password: ServiceNowインスタンスのadminパスワード
<img width="1425" alt="スクリーンショット 2019-12-11 13.22.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/bf101e4f-ea86-1fc3-7cf2-c3b03cb2a631.png">

## 1b. スクリプトでの一括設定方法
### 1b-1. スクリプトのダウンロード
以下リンクから一括設定用のスクリプトをダウンロードします。解凍後、実行のパーミッションを付与します。
[Mac](http://download.nutanix.com/solutions/Nutanix_Playbook_Automation_Mac_v1.0.zip)
[Windows](http://download.nutanix.com/solutions/Nutanix_Playbook_Automation_Windows_v1.0.zip)

### 1b-2. スクリプトの実行
以下を実行します。
"pc_ip": Prism CentralのIPアドレス
"servicenow_instance_name": ServiceNowのインスタンス名

```shell
Mac
./playbook_automation -pc "pc_ip" -2 -d -n "servicenow_instance_name"

Windows
playbook_automation.exe -pc "pc_ip" -2 -d -n "servicenow_instance_name"
```
実行後、以下のプロンプトが出ますので、Prism CentralとServiceNowそれぞれのadminユーザとパスワードを記入して下さい。

```shell
Enter username for ServiceNOW Instance dev65516: admin
Enter password for admin: 
Enter username for Prism Central 10.42.24.39: admin
Enter password for admin: 
```
## 2. ServiceNow側の準備
### 2-1. ServiceNowプラグイン有効化
[開発者インスタンス管理](https://developer.servicenow.com/app.do#!/instance)から"Action"の中の”Activate Plugin”を選択します。”Event Management”を探し、"Activate Plugin Only"の選択肢で有効化します。

<img width="1428" alt="スクリーンショット 2019-12-10 11.42.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/4673b93d-ed0d-bd93-0784-c46dd3ccdba2.png">

### 2-2. イベントルールのアップロード
[こちら](http://download.nutanix.com/solutions/Nutanix+Event+Rule+Creation.xml)からイベントルール定義をダウンロードします。

ナビゲーションペインから"取得済み更新セット"を検索し、"XMLから更新セットをインポート"を選択します。
<img width="1428" alt="スクリーンショット 2019-12-10 11.52.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/46fa63b3-9776-f09b-0246-64e5115ecec3.png">

上でダウンロードしたXMLファイルを選択し、アップロードします。
<img width="1428" alt="スクリーンショット 2019-12-10 11.52.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/60a0d735-aa43-455b-cf6e-13d88c174a50.png">

アップロードされた更新セットを選択し、”更新セットのプレビュー”を選択します。
<img width="1428" alt="スクリーンショット 2019-12-10 11.53.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/313de535-27b8-4957-798c-c21820fc0aa6.png">

プレビュー完了後、”更新セットのコミット”を選択します。
<img width="1428" alt="スクリーンショット 2019-12-10 11.54.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/b4609c30-769e-2622-2a10-b8de2576bdcc.png">

ナビゲーションペインから”イベントルール”を検索し、名前: *Nutanixで検索、イベントルールが確認出来れば完了です。
<img width="1428" alt="スクリーンショット 2019-12-10 11.56.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/d4ae1d0b-40e9-bc00-7708-9fba74ebab52.png">

### 2-3. インシデントルール
ナビゲーションペインから”アラート管理”を検索します。
<img width="1428" alt="スクリーンショット 2019-12-10 11.56.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/347ce613-8d5d-05a7-425f-74ac9083bba5.png">

”Create Incident”の値を"false"から"true"に変更します。Nutanixアラートを元にServiceNowのインシデントが作成されます。
<img width="1428" alt="スクリーンショット 2019-12-10 11.57.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/db8384b2-c0df-d744-80b4-de7135ef8d6a.png">

## 3. アラート転送の確認
アラート転送の確認をします。事前準備としてあるVMにおいてCPU使用率が90％を超えた際にアラートを発生させるアラートを下図のように作成しておきます。

<img width="799" alt="スクリーンショット 2020-05-30 22.26.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/54955bf1-67fc-6c05-28a7-b5e0ad04b4ba.png">

また、このアラートをServiceNowに転送するプレイブックを1a. 手動での設定方法を参考に作成します。

<img width="1439" alt="スクリーンショット 2020-05-30 22.29.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/9367047d-290a-d816-cc2d-392131e61a35.png">

対象のVMにおいてstressコマンドを用いてCPU使用率を上げてみます。Prism Central上では以下のようなアラートが確認出来ました。
<img width="1425" alt="スクリーンショット 2019-12-11 14.38.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/61b5a009-b121-51cf-332f-84df670cb938.png">

この時Prism CentralではこのVMのCPU使用率アラートをServiceNowに送るプレイブックが定義されています。
<img width="1425" alt="スクリーンショット 2019-12-11 14.38.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/1cd8eb5c-20a5-b2d7-d635-e870547c9eef.png">

ServiceNowインスタンスのナビゲーションペインで”すべてのアラート”を検索し確認すると、ServiceNow上でNutanixのアラートを取得しています。
<img width="1425" alt="スクリーンショット 2019-12-11 14.42.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/bbc0cd3c-ee28-daac-4c06-14ffb248827d.png">

ナビゲーションペインで”インシデント”を検索し、”インシデント管理”配下の”オープン”を指定します。ServiceNow上で作成されたアラートに基づくインシデントが自動で作成されていることが確認できます。
<img width="1425" alt="スクリーンショット 2019-12-11 14.45.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/134931/fd17fb5a-f85e-7a61-9c68-7514529eb638.png">

## 4. まとめ
ServiceNowとNutanixの連携 その2として「ServiceNowとNutanixのアラート連携」のユースケースの実装方法をご紹介しました。ServiceNowによるアラート管理・インシデント管理の一元化に対する要望にNutanixはPrism ProによるX-Playで応えます。

次回はServiceNowとNutanix Calmの連携によるIT運用のセルフサービス化のユースケースの実装方法の前半部分をご紹介します。

## 5. 参考
[英語版の解説動画もあります](https://www.youtube.com/watch?v=c2Vgsic7pSw)