【Azure】【AWS】AzureからEC2インスタンスのメトリクスを確認する

# はじめに
今回は久しぶりのAzure関連の記事です
クラウドといえばAWS,Azure,GCPの御三家が有名ですが、複数のクラウドを同時に使用している会社さんって結構多いのではないでしょうか。

今回はAzure以外のクラウドに作成された仮想マシンを、あたかもAzureリソースのように管理できるようになるサービス「Azure Arc」を使用してAWSアカウント内のEC2インスタンスのメトリクスを取得してみようと思います。

# 目次
<!-- タイトルとアンカー名を編集 -->
1. [AzureArcとは](#azurearcとは)
1. [EC2構築](#ec2構築)
1. [AzureArcインストール用スクリプトの作成](#azurearcインストール用スクリプトの作成)
1. [稼働確認](#稼働確認)
1. [おわりに](#おわりに)
# AzureArcとは
AzureArcは管理したいサーバにインストールして使用します。
インストールすることで、Azure以外の場所にあるLinux,Windowd,オンプレサーバを
Azure ResourceManager、Azure CloudShell、Azure portal、Azure Policy などのツールを使用して管理できるようになります。

https://learn.microsoft.com/ja-jp/azure/azure-arc/servers/overview#prerequisites

Azureリソースとして管理できるようになることで、たとえば以下のようなことができます。
* Defender for CloudというCSPM/CWPPサービス使用して脅威を検出したり、脆弱性を管理できる。
※Defender for CloudはAzureセキュリティベンチマークを基にリソース状況をスコア評価してくれるサービスです。
詳しくはこちらをご覧ください。

https://learn.microsoft.com/ja-jp/azure/defender-for-cloud/defender-for-servers-introduction

* VM insightsを使用してOSのパフォーマンスを監視
* Log Analytics エージェントを使用してパフォーマンスデータやイベントログを収集

# AzureArcインストール用スクリプトの作成
画像のような手順でAzureArcのインストール用スクリプトを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615865/39c5d0e7-58ed-f186-7fb0-c79dbfc97e38.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615865/753ded12-8478-cf52-aa79-719f5cc5ee3b.png)
今回は「オペレーティングシステム」で「Linux」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615865/8e664131-5df5-683b-1915-c40bb42a4c1c.png)

こんな感じのインストール用スクリプトが作成されるのでダウンロードします。
``` AzureArc_Install.sh
export subscriptionId="サブスクリプションID";
export resourceGroup="リソースグループ名";
export tenantId="テナントID";
export location="japaneast";
export authType="token";
export correlationId="e9687594-c48d-4922-****-*********";
export cloud="AzureCloud";

# インストール パッケージをダウンロードします
output=$(wget https://aka.ms/azcmagent -O ~/install_linux_azcmagent.sh 2>&1);
if [ $? != 0 ]; then wget -qO- --method=PUT --body-data="{\"subscriptionId\":\"$subscriptionId\",\"resourceGroup\":\"$resourceGroup\",\"tenantId\":\"$tenantId\",\"location\":\"$location\",\"correlationId\":\"$correlationId\",\"authType\":\"$authType\",\"messageType\":\"DownloadScriptFailed\",\"message\":\"$output\"}" "https://gbl.his.arc.azure.com/log" &> /dev/null || true; fi;
echo "$output";

# ハイブリッド エージェントをインストールします
bash ~/install_linux_azcmagent.sh;

# 接続コマンドを実行します
sudo azcmagent connect --resource-group "$resourceGroup" --tenant-id "$tenantId" --location "$location" --subscription-id "$subscriptionId" --cloud "$cloud" --correlation-id "$correlationId";
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615865/5d1b8af3-bbd1-4167-7fb2-e079cb1c5166.png)

# EC2構築
次に、EC2インスタンス(Linux)を起動します。
インターネット経由でアクセスできるようにするためパブリックサブネットに作成しました。
構築手順は割愛しますが、セッションマネージャーもしくはSSHで接続可能な状態にしてください。

EC2を起動したらセッションマネージャー/SSHで接続します。
接続したら先ほどダウンロードしたスクリプトをS3経由でダウンロード、もしくはvim等でサーバ内に.shファイルとして作成してください。
今回はvimを使用しました。スクリプトの書き換えは不要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615865/3c9a7a2b-ceab-9e80-a22c-e1a6acba5b9e.png)

スクリプトを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615865/98093fb5-a0c7-a276-8b8f-d35364f5be67.png)

途中でダウンロードが止まり、URLと認証コードが表示されます。
URLに接続し、認証コードを入力してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615865/99eac66e-56d2-8608-6c26-89de0923ca9a.png)

コードを入力したら使用したいアカウントにサインインしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615865/37a8bb97-c208-5001-8bd7-78f2e10b29ee.png)

認証完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615865/44afb5a5-4a25-b4a8-a6c5-1528edd08e71.png)

認証が完了するとダウンロードが進み、「Connected machine to Azure」と表示されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615865/5f262538-ca77-846d-df45-06a26d2d8908.png)


# 稼働確認
AzureArcの画面を開いてみます。
EC2インスタンスのインスタンスIDが追加されていることが確認できます。
この時にインスタンスIDが表示されない場合は、セキュリティグループやNACLで外部へのアクセスが制限されていないか確認してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615865/1953a76f-3c67-010c-c6c0-10a44bf335ce.png)

念のためAWSコンソールでもインスタンスIDが一致しているか確認してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615865/b8db3246-824e-35b6-2b63-ea4bbec42b8b.png)

Azure上でEC2のCPU使用率やメモリ使用率が取得できました。
AWS上でも確認してみると若干の差異はありますが、大体同じ値が取得できていることが確認できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615865/fa07d53f-3e8f-c58d-4228-dea10e0eff4b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2615865/b0cc08cf-4dea-9799-34d1-654cb627115a.png)

# さいごに
今回はAzureArcを使用してEC2インスタンスを認識してみました。
EC2のメトリクスはどこまで取得可能なのか(作りこめば色々なメトリクスをAzureで確認できるようになるのか)など、実用的な内容については触れなかったので次回以降のネタとして機会があれば試してみようと思います。

また、マルチクラウドな構成はこれからもどんどん増えてくると思います。
ほかにも気になるネタがあれば積極的に記事にしていきますので、興味のある方は読んでいただけると嬉しいです。

今回はここまでです。
最後まで読んでいただきありがとうございました。