【初心者】AWS Application Discovery Service を使ってみる

# 目的
- AWS Application Discovery Serviceについて仕事上の相談があり、勉強（知ったかぶり）のため、基本動作を確認することにした。

# AWS Application Discovery Service とは（自分の理解）
- オンプレ等、AWSとは別環境で稼働しているサーバ（物理/仮想問わない）のスペック、負荷状況等を収集できるサービス。
- 収集したデータを元にAWSに移行する場合の必要スペック（インスタンスタイプ等）を設計し、移行計画を立案する。
- AWS Application Discovery Service で環境調査をして、AWS Server Migration Service （AWSへの移行を行うサービス）等で実際にMigrationを行う。それらの進捗を管理画面（AWS Migration Hub：マネージメントコンソール内で、移行関連サービスを一覧できる画面）で一元管理する、という仕組み。

# AWS Application Discovery Service の種類
- エージェント有タイプとエージェントレスタイプの2種類がある。VMWare環境（＝vCenterにアクセス可能な環境）であれば、Connectorを入れて、エージェントレスでvCenter配下のインスタンスのデータ収集が可能。ただし収集できるデータはエージェント有タイプのほうが多い。
- 収集できるデータについては[公式ユーザガイド](https://docs.aws.amazon.com/ja_jp/application-discovery/latest/userguide/what-is-appdiscovery.html)を参照。

# やったこと
以下を実施した（今回はエージェント有タイプのみ検証）。

- オンプレ環境のインスタンス(WS2016)にAWS Application Discovery Serviceのエージェントをインストール。
- 管理画面(AWS Migration Hub)やAthenaにて、データ収集状況の確認、収集データの内容確認を行う。


# 構成図

![構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/750fca5a-142a-4f7b-5806-e5f0025dbb75.png)

- AWS Migration Hub, AWS Application Discovery Serviceが使えるのは2019/7/23現在、Oregonリージョンのみ。

# 導入手順
- エージェント用IAMユーザ作成
    - 専用のIAMユーザを作成し、エージェントがデータをアップロードするための権限「AWSApplicationDiscoveryAgentAccess」を付与し、AccessKey/SecretKeyを発行する。このKeyをエージェントのインストール時に使用する。
- オンプレ上のサーバ(WS2016)へのエージェントのインストール
    - 管理画面からWindows用のエージェントのインストールファイルを入手する。
    - オンプレのサーバ内のコマンドラインでエージェントをインストールする。
```
msiexec.exe /i AWSDiscoveryAgentInstaller.msi REGION="us-west-2" KEY_ID="<aws key id>" KEY_SECRET="<aws key secret>" /q
```
    - 筆者の環境では、インストール時に「Visual C++ 2015 Redistributable for x86」が必要とのエラーが出たため、これを事前にインストール。
    - 最初、マニュアルを見ずにインストーラをダブルクリックしてインストールしてしまった。それだとkeyの情報が入らないため、一度アンインストールしてやり直し。
    
- 動作確認
    - インストールが成功すると、エージェントからAWSのApplication Discovery Service のエンドポイントに対して定期的にデータ送信が行われるようになる。
    - ステータスは以下の管理画面（Migration Hub - Discover - Data Collectors - Agents）で閲覧可能。エージェントの状態が表示される。
    
![apd10a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/343460ff-24ed-142f-e589-bbf256c313c7.png)

# 収集データ確認手順
- (1)Migration Hub 画面での確認
    - 管理画面（Discover - Servers） から、収集したサーバ情報の概要（OS、CPU数、MEM、NIC数、IPアドレス等）の表示が可能。

![apd11a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/7126fb81-0c9b-2f1c-6e58-17c403aeadca.png)


- (2)csv Exportでの確認
    - 上記の画面(Discover - Servers) で「Export server details」を実行すると、指定時刻から最大72時間分のデータをcsv出力することが可能。
    ![apd12a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/e5f30ca9-bd0a-d0ed-9ba4-2ef09cda9c95.png)
    - 「destinationProcessConnection」、「networkInterface」、「osInfo」、「Process」、「sourceProcessConnection」の5種類のcsvデータが出力される。以下は「process」の出力例。
    
![apd13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/70596b99-adc7-f07d-dd78-73782fd68628.png)

- (3)Athena での確認
    - 管理画面(Migration Hub - Discover - Data Collectors - Agents)で、「Data Exploration in Amazon Athena」のスイッチをONにすると、自動的にKinesis Data Firehoseの設定が行われ、情報がS3に保存される。
    ![apd15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/6a9b4c1c-af17-7385-993f-f35566b3f565.png)
    - 以下のようにKinesis Data Firehoseの入出力が自動設定される。
    ![apd14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/933f19c2-a35c-d84b-04cf-ccfa3b65d8eb.png)
    - 以下はAthenaでのデータ検索例。
    ![apd16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/189302/cbf19d61-9e59-cd53-0d85-7f0977f249e3.png)


# 所感
- 「Application Discovery Service」 というサービス名だが、動作プロセス等は取得できるものの、インストールされているアプリケーション(Officeとか)が取れるわけではないので、インベントリ的な使い方ではなさそう。
- オンプレのvCenterにアクセスできる権限が得られるのであれば、サーバ情報が一気にまとめて取得できるので、移行対象サーバリストを作るのに便利かなと感じた。
- 移行関連のサービスがいろいろ出ているため、他のものも検証してみたい。