Exastro OASE クイックスタート (v1.3.0)


#はじめに
###ExastroOASEって何？
>Exastro OASEはシステム運用の自律化・効率化・省力化を
支援するためのOSSです。　　
([公式コミュニティサイト](https://exastro-suite.github.io/oase-docs/index_ja.html)　より) 

Exastroシリーズはシステムの様々なフェイズを自動化・省力化するためのソフトウェアスイートです。
その中でも「Operation Autonomy Support Engine」は運用フェイズを支える役割を担います。
※以降、基本的には略称のOASE(おあ-ぜ)と記載します。

概要図を見てみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/33a5829a-834b-a6c6-5fe8-bf5c883aaffe.png)


注目したいのは、__監視ソフトや自動化ソフトと連携している__点ですね。
下記のような流れを自動化することで、ミスの撤廃や人的コストの低減が期待できます。

1. **監視**：監視ソフトからメッセージを受け取る
1. **障害の切分け**：事前に定義したルールリストに基づき、対処の必要性を判断する
1. **対応**：ExastroITAで運用作業を自動実行する。(または管理者へ通知する)

テーマがハッキリしていて好印象です。
今回は初心者向け資料の「Learn」を見ながら、このOASEを学んだ記録を書いていきます。

### 「Learn」をやる
Exastroのコミュニティサイトには「Learn」なる資料が用意されており、
初心者向けの機能概要やハンズオン手順が掲載されています。

複数あるLearn資料から、今回は「クイックスタート」編を実践しました。
OASEは監視ソフトやITAなどの作業自動化ソフトと連携して用いるのが本来のようですが、クイックスタート編ではそういった連携設定などは極力省かれています。

クイックスタート編は「ディシジョンテーブルの作成」と「メールの自動送信」に内容を絞っており、OASEに初めて触れるにはおあつらえ向きです。

#作業のまえに

###システム環境
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/308b8ad5-4c33-25a8-7fb4-12b992d7159f.png)

####OASEサーバ
OASEはインストール済みです。

メール送信機能を利用するためSMTPサーバが必要になりますが、こちらも同じサーバにインストールしています。

<details><summary>インストールして実践してみたい方へ</summary><div>
[公式マニュアル](https://exastro-suite.github.io/oase-docs/learn_ja.html)を参照してインストールしましょう。
また公式ではないですが、[関連リンク](#関連リンク) にも**インストールを行った方のQiita記事を掲載しています。**

インストールスクリプトが用意されており、環境の作成は簡単です。
</div></details>

+ Exastro Operation Autonomy Support Engine V1.3.0
+ CentOS Linux7.8
+ Postfix

####クライアント
OASEのweb画面にアクセスするためのクライアントです。
また後半ではTera Termを使用してOASEサーバにリクエストを送信します。

+ Microsoft Windows10
+ Google Chrome
+ Tera Term

### 作業フロー
作業の全体像は下記のとおりです。
先述のとおり**「ディシジョンテーブルの作成」**と**「メールの自動送信**」が内容の中心になっています。

【下準備】

1. アクション設定
1. メールテンプレートの作成
1. ディシジョンテーブルの作成と設定
1. テーブル内容の設定
1. テストリクエストと本番移行

【実行】
<br>&ensp;6. curlでリクエストを送る
&ensp;7. アクション実行結果の確認



##下準備
### 1.アクション設定
まずは「アクション」の設定を行います。
これはイベント発生時に自動で起こす行動を定義するものです。

アクションの種類には**「ITA Driver ver1」**と**「mail Driver ver1」**とがあります。
v1.3.0では「Servicenow Driver」も追加されたようです。

「ITA Driver」を使えば、ExastroITAと連携してシステムに必要な処置を行うよう自動化設定ができます。
クイックスタート編で使用するのは__「mail Driver」__です。こちらは事前に設定したメールアドレスへ__通知メールを自動送信する__機能を持ちます。

***

【使うメニュー】 「システム」グループ　/ 「アクション設定」メニュー

画面右上から「アクション先の追加」を押下し、アクション先から「mail Driver ver1」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/1d2cf6bf-e26f-6de1-a83b-1101e2c4f577.png)

フォームに必要情報を入力し、**「保存」**ボタンを押下します。
今回は下表のように入力しました。

|項目名|例(私の入力値)|備考|
|:--|:--|:--|
|名前|quickstart_practice|アクション自体の名前です。<br>後述するディシジョンテーブルの設定時、この値を指定します。|
|プロトコル|smtp|smtp_authの選択も可能です。|
|ポート|25||
|ユーザ名|(空欄)|ユーザ名です。<br>メールの送信者となります。|
|パスワード|(空欄)|

### 2.メールテンプレートの作成
次は送信する**メールの内容**を登録していきます。

定義するのはメール本文の内容や件名、送信先です。
メール本文では、所定のタグを用いて**「リクエスト情報」や「イベント情報」**を通知するようにも設定できます。

<details><summary>【参照】利用できるタグ</summary><div>

|タグ|概要|記載してくれる情報|
|:---:|:---:|:---|
|[ACTION_INFO]|リクエスト情報|・イベントシリアルNo.<br>・ルール種別名<br>・リクエストユーザ<br>・リクエストサーバ| 
|[EVENT_INFO]|イベント情報|・イベント発生日時<br>・条件名<br>・ルール名|
</div></details>

*** 
【使うメニュー】 「システム」グループ / 「アクション設定」メニュー

画面上部のタブで「mail Driver ver1」を選択し、「メールテンプレート」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/1541cafe-0285-8afd-4ff3-62e87f84769b.png)

画面右上から「新規追加」を押下するとメールテンプレートの作成画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/535b3bbf-3672-b242-8982-189cd18f2d40.png)


今回は下表のように設定しました。

|項目名|入力値|
|:---|:---|
|テンプレート名|qiita_practice|
|宛先|(自分のメールアドレス)|
|CC|(空欄)|
|BCC|(空欄)|
|件名|[noreply]OASEクイックスタート通知メール|
|本文|これは試験用のメールです。<br>[ACTION_INFO]<br>[EVENT_INFO]|

### 3.トークンの設定
トークンを払い出します。

後の作業でOASEサーバに「リクエスト」を送信し、イベントの疑似的な情報を渡します。
その際に合わせて送る**認証情報**としてこのトークンを使用します。

***
【使用する画面】 「ルール」グループ　/ 「トークン払い出し」メニュー

画面右上の「新規トークン払い出し」を押下すると設定画面に移ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/867b12e4-f008-609e-0cb4-3e3b33e37ad7.png)

今回は下記の内容で作成しました。

|項目名|入力値|
|:---|:---|
|トークン名|quickStart_token|
|有効期限|(空欄)|

<font color="red">【注意】 権限設定欄にて、自身のユーザが所属するグループで<b>「権限あり」にチェックを入れる</b>必要があります。チェックがない場合、GUIから参照や操作ができなくなります。</font>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/0fa59c29-9bac-ad61-fd3f-ec9ba4250f64.png)

表示されたトークンは後ほど使用しますので、メモに控えておくとよいです。
(権限さえあれば、あとで再表示することはできます。)

### 4.ディシジョンテーブルの作成と設定
メール関連の設定が終わりました。次は「どんなときメールを出すか？」を設定していきます。
つまり**ディシジョンテーブルとルールの設定**です。

ディシジョンテーブルとは、1つ以上の条件の組み合わせと、その結果を表にしたものですね。
簡単な図ですが、このようなものです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/87aedfda-0132-ba4b-1b84-4ff29082cef3.png)


#### 4.1.ディシジョンテーブルの作成
ここではテーブルの名前、条件式の種類・数・名前などを定義するだけです。
詳細なルール設定は続く「テーブル内容の設定」で行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/aa42f85a-11d6-668b-597b-a0202428d770.png)

***
【使うメニュー】 「ルール」グループ / 「ディシジョンテーブル」メニュー

画面上部の「新規追加」を押下し、設定画面に入力していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/ea7699ed-2a93-f677-2f0e-77f20aaf3d65.png)

今回は下表のように設定しました。
Zabbixとの連携が可能とのことなので、ぼんやりとtriggeridに応じてメール送信を行うイメージで作成しています。

【基本情報】

|項目名|入力値|
|:---|:---|
|ディシジョンテーブル名|qiita_practice|
|概要|(空欄)|

【条件式】

|条件名|条件式|
|:---|:---|
|あるトリガーIDを含む|含む|

【未知事象通知】

|項目名|選択|
|:---|:---|
|未知事象通知|通知しない|

<details><summary>未知事象通知とは</summary><div>
イベント内容が**いずれのルールにも合致しない場合に、通知メールを送信する**よう設定することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/94389e42-ca8d-f12d-0e8f-2fe82f007ed9.png)

</div></details>

<font color="red">【注意】 権限設定欄にて、自身のユーザが所属するグループについて<b>「更新可能」にチェックを入れる</b>必要があります。権限がない場合、GUIから参照・操作ができなくなります。</font>

#### 4.2.ディシジョンテーブルファイルをダウンロードする
ディシジョンテーブルを作成すると、ルール定義を作成するためのExcelファイルが生成されます。これを編集して、OASEへアップロードする流れとなります。

ではダウンロードして、ルールを定義していきましょう。
***
【使うメニュー】「ルール」グループ / 「ディシジョンテーブル」メニュー

作成したディシジョンテーブルのレコードから、ダウンロードボタンを押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/9671667d-5102-dde1-ede8-7b406a9be147.png)

#### 4.3.ルールテーブルを編集する
ダウンロードしたファイルを編集していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/b39fec94-22a0-768a-be20-2249273f2f04.png)

今回はクイックスタートということで、1つだけルールを定義しました。
項目は色でカテゴリ分けされていますので、分割して私の入力例を記載します。

【コメント部(緑色のセル)】　自由にコメントを書くことができます。

|項目値|今回の入力値|
|:--|:--|
|ルール説明|トリガーに応じて通知メールを送信|

【条件部(水色のセル)】 ルールに合致する条件を作成します。ディシジョンテーブル作成時に登録した条件がここに現れます。

|項目値|今回の入力値|
|:--|:--|
|あるトリガーIDを含む|12345|

【アクション部(黄色のセル)】　ルール毎に実行するアクションを設定します。
ここでアクション名やメールテンプレート名を指定します。

各項目の解説は[公式ドキュメント](https://exastro-suite.github.io/oase-docs/documents_ja.html)を参照してください。


|項目値|今回の入力値(赤字は過去に作成したもの)|
|:--|:--|
|ルール名|通知メール送信|
|アクション種別|mail(ver1)|
|アクションパラメータ情報|MAIL_NAME=quickstart_practice,<br>MAIL_TO=,MAIL_CC=,MAIL_BCC=,<br>MAIL_TEMPLATE=qiita_practice<br>(私の入力値を張り付ける方は、改行を削除してください。)|
|アクション実行前パラメータ情報|X|
|アクションリトライ感覚|1|
|アクションリトライ回数|1|
|アクション抑止間隔|5|
|アクション抑止回数|1|
|条件回数|X|
|条件期間|X|
|大グループ|X|
|優先順位|X|
|小グループ|X|
|優先順位|X|

【アクション条件部(赤色のセル)】 ルールを適用する期間の始まりから終わりまでを設定できます。

|項目値|今回の入力値|
|:--|:--|
|有効日|2021-01-01 01:00|
|無効日|2021-12-31 21:00|


#### 4.4.ディシジョンテーブルファイルをアップロードする

【使うメニュー】「ルール」グループ / 「ルール」メニュー

1. [ファイルを選択]を押下して、作成したディシジョンテーブルファイルをアップロードする
1. [アップロード]を押下する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/46d3d492-9236-f554-ea25-b5bfda0af7dc.png)

### 5.テストリクエストと本番移行
#### 5.1.テストリクエストを実施する
ディシジョンテーブルをアップロードして、設定したルールが一覧に表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/3a0dc9a3-2dc3-4a67-b0a3-e13de5c5b303.png)

画面下の「プロダクション適用ルール(=本番)」ではなく、ステージング適用ルール(=検証)に追加されたのがわかります。
ここからはルールの正しさを確かめ、プロダクションに移行する作業を行います。
まずは、作成したルールに対して**テストリクエストを送信して挙動を確認します。**

***
【使うメニュー】 「ルール」グループ / 「ルール」メニュー

まずは画面上部から[テストリクエスト]を押下します。

そして、表示された画面の「ディシジョンテーブル名選択」で作成したディシジョンテーブルを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/8e6cc2f8-82ee-c547-7119-86e5597c6df2.png)

「設定」タブで、設定したルールに合致する(もしくはしない)値を入力して、「実行」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/94f32075-24b4-a2a6-84fd-712ca6de51e7.png)

今回は「あるトリガーIDを含む」条件に対して下表のデータを入力しました。

|回数|入力値|
|:--|:--|
|1回目|["12345"]|
|2回目|["123456"]|

実行を終えると[ログ]タブに遷移し、マッチしたルールが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/f88fd475-4683-e373-c0b8-7d139a04f71f.png)

2回目はマッチするルールがないため、マッチング結果が表示されません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/53a65ee9-729f-6d73-92d0-2bb06ee795c4.png)

このように、**値に対して意図したルールがマッチするかどうかを確認する**ことができました。

#### 5.2.ルールを本番環境へ移行する
ルールの正しさを確認したところで、本番環境への移行を行います。

***
【使うメニュー】 「ルール」グループ / 「ルール」メニュー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/266ebbb3-7c1e-6d27-01d6-8f31039f63f1.png)

1. 作成したディシジョンテーブルの[運用ステータス]欄でプルダウン項目から「検証完了」を選択する。
1. [操作]からチェックマークを押下する。

無事、ルールをプロダクション適用ルールにできました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/ebe77830-4d0f-3395-407a-d1798b650e79.png)


##実行
### 6.curlでリクエストを送る
最後に、作成したルールを動かしてみます。
**RestAPI機能を使い、作成したルールに対してリクエストを送る**ことができます。

このコマンドで認証情報として使用するため、トークンを払い出す必要がありました。

#### 6.1コマンド書式・実行例
クライアントでコマンドを実行し、リクエストを送信します。
コマンドの書式は下記のとおりです。

***

```
curl -X POST -k "https://<①ホスト名>/oase_web/event/event/eventsrequest" \
-H "accept: application/json" \
-d "{\"decisiontable\":\"<②ディシジョンテーブル名>\",\"requesttype\":\"<③リクエスト種別>\",\"eventdatetime\":\"<④イベント発生日時>\",\"eventinfo\":[\"<⑤イベント情報>\"]}" -H "Authorization: Bearer <⑥トークン>"
```

|項目|意味|入力例|
|:--|:--|:--|
|①ホスト名|ホスト名、もしくはIPアドレスを指定します。|192.168.11.10<br>myhogeoase|
|②ディシジョンテーブル名|文字通りです。<br>[ACTION_INFO]の情報としてメールに記載されます。|Qiita-practice|
|③リクエスト種別|投入先である「1:プロダクション」「2:ステージング」のどちらかを指定します。|1|
|④イベント発生日時|文字通りです。<br>[EVENT_INFO]の情報としてメールに記載されます。|2018/12/13 15:16:29|
|⑤イベント情報|ディシジョンテーブルで作成したルール条件の数値や、文字列を指定します。<br>配列形式です。|[\"2\",\"あああ\"]|
|⑥トークン|トークン払い出し画面にて取得した値を指定します。|-|


私の環境での実行例は下記のとおりです。

```
curl -X POST -k "https://192.168.11.10/oase_web/event/event/eventsrequest" \
-H "accept: application/json" \
-d "{\"decisiontable\":\"qiita_practice\",\"requesttype\":\"1\",\"eventdatetime\":\"2020/05/01 01:00:00\",\"eventinfo\":[\"[12345]\"]}" -H "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxx"
```

#### 6.2リクエスト履歴の確認
「リクエスト履歴」画面から、送信したリクエストが確認できます。
ディシジョンテーブルやイベント情報が正しいことを確認します。

***
【使うメニュー】 「ルール」グループ / 「リクエスト履歴」メニュー

図のように履歴が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/4a2c5a29-86c3-c413-15e9-58def13fd225.png)


### 7.アクション実行結果の確認
送信したリクエストで送信したデータがルールに合致していた場合、アクションが実行され、メールが送信されます。

#### 7.1.メールを確認する
まずは、送信されたメールを確認します。

メールテンプレートで設定した文章や、タグに基づく情報が記されています。

> これは試験用のメールです。
[リクエスト情報]
イベントシリアルNo.：TOS_20210601023711205164_0000000068
ルール種別名：qiita_practice
リクエストユーザ：OASE Web User
リクエストサーバ：OASE Web <p></p>
[イベント情報]
イベント発生日時：2020-06-01 12:00:00
条件名 = 値 :
あるトリガーIDを含む = 12345

#### 7.2.OASEからアクションの履歴を確認する
アクションの履歴は「アクション履歴」メニューでも確認できます。

***
【使うメニュー】 「ルール」グループ / 「アクション履歴」メニュー

リクエストの対象となったディシジョンテーブルが正しいか、
意図したルールに合致しているかなどを確認しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/702786/0a12bd59-0551-fdb2-ad98-65864bca97af.png)

# おわりに
以上で、Learn「クイックスタート」の内容は終了です。

今回はコミュニティサイト掲載のLearn資料「クイックスタート」の手順を実践し、
OASEのメール送信機能を確認しました。

###振り返り
OASEが搭載する機能の全体を思えば、今回触れた機能はほんの一部分に過ぎません。
ですが、「ルールリストを登録しておくことで、メッセージに応じたアクションを自動実行する」という根幹の部分を感じることができました。

ルールを「ステージング」と「プロダクション」の2段階に分けている点は好印象です。
テストリクエストやAPI機能を使用して、ルールの厳密さを確かめたうえで実装することができます。

ルールの定義で利用するのはExcelファイルやwebUIだけでした。
この点は作業の簡易化に貢献するかと思われます。(私のような)未熟な作業者であっても、安心して作業を行えます。

### 今後に期待をかけて
繰り返しになりますが、クイックスタート編で触れた機能はほんの一部分に過ぎません。
クイックスタートでは各種監視ソフトと連携するためのアダプタを使用していません。
ExastroITAを利用した対処の自動実行も扱っていません。

その辺りは将来的に情報が整備されるはずです。
今後新しいLearnが登場した際は、改めて記事を書いてみたいと思います。

#関連リンク
+ [【随時更新】Exastroの参考になる記事をまとめてみた](https://qiita.com/ooif/items/79952398fb03ca3ec7fd)<br>Exastro関連記事を一覧できます。<p></p>
+ [Exastro Operation Autonomy Support Engine (公式サイト)](https://exastro-suite.github.io/oase-docs/index_ja.html)
+ [OASE_docs (公式マニュアル)](https://exastro-suite.github.io/oase-docs/documents_ja.html)
+ [Exastro IT Automation (Exastro ITA公式サイト)](https://exastro-suite.github.io/it-automation-docs/index_ja.html)<br>各種の公式情報です。<p></p>
- [第1回: Exastro OASE を最速でインストールする](https://qiita.com/wreath-vine/items/46b3838ce845bba9ae4e)
- [第2回: Exastro OASE でマッチポンプした話(下準備編)](https://qiita.com/wreath-vine/items/d916764885ea8169cdda)
- [第3回: Exastro OASE でマッチポンプした話(活用編)](https://qiita.com/wreath-vine/items/003bb12e7096ec9070cb)<br>OASEのインストールから実践的な利用のまでを記録した記事です。(別の方が作成)<p></p>