IBM Workload Scheduler - AI Data Advisor をインストールしてみた

# そもそもAI Data Advisorとは
IBM Workload Scheduler (以下IWS）バージョン 10.1では AI Data Advisor(以下AIDA）と呼ばれるAIによるジョブ管理機能が追加されています。
バージョン 10.1で追加された主要な新機能の一つで、AIにより毎日のジョブスケジュール実行状況を分析し、「いつもと様子が異なる」場合にそれを運用者に示してくれる機能です。

例えば個々のジョブのステータスを監視しているだけでは気づきにくい、次のような状況を検知します。
- スケジュールされているジョブ数が通常よりも多い
- ジョブスケジュールの進みが遅い（時系列で見た時に実行完了ジョブ数の推移がいつもよりも緩やか）

AI Data Advisor については、[製品マニュアル](https://www.ibm.com/docs/ja/workload-automation/10.1.0?topic=wsv1e-detecting-anomalies-in-your-workload-ai-data-advisor-aida "AI データ・アドバイザー (AIDA) を使用したワークロードの異常検出")
や[YouTubeの Workload Automation チャンネルの動画](https://www.youtube.com/watch?v=xFwhpCtpTfg "AI Data Advisor(AIDA) for an intelligent workload management") でも紹介されていますが、実際にどんな感じなのか見てみたい！ということでインストールしてみました。

とにかく検証用に早く動かしてみたいということでインストールした際の手順です。導入要件やインストール手順の概要を掴みたい、簡易検証で手っ取り早く導入してみたい、といった時に参考にしていただければ幸いです。

# IWS 10.1 & AIDA 構成
AIDAはIWS 10.1サーバーで公開されるメトリックをAPIで収集し、分析します。
AIDAはDockerでのデプロイとKubernetesでのデプロイが可能ですが、今回は簡易に検証環境を作成したいのでDockerでデプロイすることにします。
IWSサーバーとは別立てとし、次のような構成とします。

![AIDA_overview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/68ef0788-b3d5-e5d9-9d38-5dd22b053b0a.png)



# AIDA導入前提要件
[製品マニュアル](https://www.ibm.com/docs/ja/workload-automation/10.1.0?topic=containers-deploying-ai-data-advisor "AI データ・アドバイザーのデプロイ")からリンクされている[GitHubページ](https://github.com/WorkloadAutomation/HCL-AI-Data-Advisor-for-IBM-Workload-Automation "AI Data Advisor (AIDA)")にてAIDAのインストール手順が公開されており、こちらに前提要件の記載があります。
Dockerへのデプロイの場合の導入前提要件は以下です。
- Linux(x86)またはLinux on Z
- Docker 19.x以降
- Docker Compose 12.8以降
- AIDAを構成するコンテナによって使用されるリソースの最大量
    - CPU:6コア
    - メモリ:32GB

その他要件：
- インターネット接続（インストール過程で外部レジストリよりDockerイメージをダウンロードしているように見えるため）
    
[IBM Software Product Compatiblilty Report](https://www.ibm.com/software/reports/compatibility/clarity-reports/report/html/softwareReqsForProduct?deliverableId=CD62D840519B11EBBBEA1195F7E6DF31&osPlatforms=AIX|HP|IBM%20i|Linux|Solaris|Windows&duComponentIds=S004|S005|A002|A003|A013|A001|A011|C012|C008|C014|C010|C009|C007&mandatoryCapIds=30|9|25|26&optionalCapIds=341|130|223 "IBM Workload Scheduler 10.1
Detailed System Requirements") には Ubuntu 20.04 および 22.04で検証済みと解釈できる記載があったので、Ubuntu 22.04 にインストールすることにしました。

なお、Githubの Prerequisites（前提要件）にはOpenSearch 2.3.0 や Keycloakのコンテナイメージもリストされていましたが、Fix Central からインストールイメージをダウンロードして導入する場合はこれらのコンテナイメージを別途入手する必要はなく、インストール過程で適宜ダウンロードが行われました。

# IWS側の事前準備

AIDAでIWSの稼働状況を分析しアノマリーを検知するためには、IWSのメトリックを収集する必要があります。AIDA導入前に、[こちらの手順](https://www.ibm.com/docs/en/workload-automation/10.1.0?topic=scheduler-exposing-metrics-monitor-your-workload "Monitoring with Prometheus") に従ってIWSのメトリックをAIDA用に公開する必要があります。

* IWSサーバーにログインします。以降の作業は全て rootユーザで実行します。

* IWS用 WAS Liberty の設定ファイルが保管されているディレクトリーへ移動します。(下記は /opt/wa にIWSサーバーを導入している場合）
```
# cd /opt/wa/TWSDATA/usr/servers/engineServer/configDropins/overrides
```

* prometheus.xmlを編集します。オリジナルのファイルは別ディレクトリーへバックアップを取得します。（同じディレクトリーでバックアップファイルを作成すると誤動作の原因となります。）
編集例：

```
# cat prometheus.xml 
<server>
  <featureManager>       
     <feature>mpMetrics-2.3</feature>
     <feature>cdi-2.0</feature>
  </featureManager> 
  <administrator-role> 
    <user>${user.twsuser.id}</user> 
  </administrator-role>
</server>
#
```

* IWSのWASを再起動します。
```
# su - wauser
$ conman "stopappserver ;wait"
$ conman "startappserver ;wait"
```

* ブラウザより、メトリックにアクセスできることを確認します。
https://IWSサーバーホスト名またはIP:31116 へアクセスし、下記のようにメトリックが表示されることを確認します。
![スクリーンショット 2023-06-06 10.34.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/d465cf87-d2eb-0784-f91a-6cad5daf4318.png)


# AIDAインストール手順

AIDAをDockerへデプロイする手順は２通りあります。
- Fix Centralでインストールイメージをダウンロードしてインストールする
- IBM Cloud Container Registryからコンテナイメージをダウンロードして起動する
今回はFix Centralでインストールイメージをダウンロードする方法をとりました。

以降の手順ではDocker, Docker Composeが導入済みであり、Linuxカーネル・パラメーター　vm.max_map_count　が 262144 に設定されていることを前提とします。

## インストールイメージの入手・展開・ロード

[Fix Central](https://www.ibm.com/support/fixcentral)よりインストールイメージをダウンロードします。本手順を実施時点の最新のインストールイメージは IWS 10.1 Fix Pack 3 （10.1.0.3-2023.05-IWS-DOCKER-AIDA-LNX_X86_64）でした。
ダウンロードしたインストールイメージをAIDA導入サーバーへアップロードし、作業用ディレクトリーで展開します。

操作は全てrootユーザで行います。
* umask を 0022へ設定する。
```
# umask 0022
# umask
```

* 作業用ディレクトリ（ここでは /work/docker ) でインストールイメージを展開します。
```
tar -zxvf 10.1.0.3-2023.05-IWS-DOCKER-AIDA-LNX_X86_64.tar.gz
```

* /work/docker/docker-deploymentディレクトリーへ移動し、Docker イメージをロードします。
```
# cd docker-deployment/
# ./AIDA.sh load
```


## 設定ファイル(common.env）の編集

* AIDAの設定は common.envで行います。次のパラメーターを編集します。

|パラメーター名 |設定値|説明 |
|---|---|---|
|OPENSSL_PASSWORD|default|Open SSL証明書のパスワード|
|LICENSE|accept|ライセンスへの合意|
|WA_OMETRICS|https://IWS_SERVER_IP:31116/metrics|IWS公開メトリックへの接続URL。IWS_SERVER_IPはIWSサーバーのIPアドレスまたはホスト名。|
|WA_METADATA|https://IWS_SERVER_IP:31116/twsd/engine/historical_metric/metadata|IWSメタデータへの接続URL。IWS_SERVER_IPはIWSサーバーのIPアドレスまたはホスト名。|
|WA_RECORDS|https://IWS_SERVER_IP:31116/twsd/engine/historical_metric/record|IWS履歴データへの接続URL。IWS_SERVER_IPはIWSサーバーのIPアドレスまたはホスト名。|
|ALERT_CONFIG_URL|https://IWS_SERVER_IP:31116/twsd/engine/definition/alert|アラート構成ファイルへの接続URL。IWS_SERVER_IPはIWSサーバーのIPアドレスまたはホスト名。|
|KPI_CONFIG_URL|https://IWS_SERVER_IP:31116/twsd/engine/definition/kpi|KPI定義ファイルへの接続URL。IWS_SERVER_IPはIWSサーバーのIPアドレスまたはホスト名|
|WA_CATALOGS|https://IWS_SERVER_IP:31116/twsd/engine/definition/aida_catalog|IWS_SERVER_IPはIWSサーバーのIPアドレスまたはホスト名|
|HTTP_AUTH_USER|wauser|IWS管理ユーザー名|
|HTTP_AUTH_PASSWORD|password|wauser（IWS管理ユーザー）のパスワード|

## AIDAコンテナのビルドと開始
* AIDAコンテナをビルドし、起動します。
```
# ./AIDA.sh build-start
```

## IWSサーバーの登録

* AIDAの分析対象となるIWSサーバーを登録します。
下記コマンドを実行後、プロンプトに従って、IWSサーバーのメトリック公開URL、IWS管理ユーザー名、パスワードを入力します。"Is the engine distributed?"の質問には y で回答します。
```
# ./AIDA.sh add-credentials
```

## AIDAへのアクセス

* https://AIDAサーバーのIPまたはホスト名:9432 へアクセスします。デフォルトのユーザー名とパスワードを入力してログインします。
デフォルトユーザー名：aidaadmin
パスワード：admin
![スクリーンショット 2023-06-05 21.30.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/c3676372-8c2c-94a3-0d64-1d83bfeb98ec.png)

次のような画面が表示されれば、インストールは成功です。
![スクリーンショット 2023-06-06 10.04.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135603/7462e03f-cafd-083a-9552-ed6d27606b2e.png)

AIDAでどのような事象を検知できるのかは、検証して別途記事にまとめたいと思います。

本記事は以上です。