Azure IoT HubをDatadogで監視してみる

みなさん、こんにちは。DatadogテクニカルエバンジェリストのTaijiです。

こちらは2022年アドベントカレンダー25日目の記事です🎄
前の記事は [@yukin01](https://qiita.com/yukin01) さんの [Datadog SLO の推移をダッシュボードに表示する](https://zenn.dev/yukin01/articles/datadog-slo-custom-metrics) でした。

今回は、Azure IoT Hubをプラットフォームとして監視する方法を紹介したいと思います！

### はじめに
現在、大手クラウドベンダーにおいて、MQTTブローカーも含めIoTのメッセージハブとなれる機能を提供しているケースが非常に少なくなっています。その中で、このAzure IoT Hubは、1つの有用な選択肢となると個人的に考えています。
趣味の範囲で運用する分には監視までは不要かと思いますが、業務領域で運用を考えているならば当然監視をどうするかも含め設計が必要になってきます。

### DatadogとAzureのIntegration
Datadogでは幸いAzureとのIntegrationをデフォルトで提供しています。ですので、基本的にはAzureのアカウントをDatadogに紐付ける形でメトリクスを収集できるようになります。
![Screenshot 2022-12-23 at 19.33.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/4e4cf685-03f7-c801-d039-e0816d1e7506.png)

では最初にDatadogの公式ドキュメントを見てみましょう。Integrationsの下に[Microsoft Azureのページ](https://docs.datadoghq.com/ja/integrations/azure/?tab=azurecliv20)があります。

これによると、Azureに接続すると以下のことができるようです。
- Datadog Agent をインストールして、またはインストールせずに、Azure VM からメトリクスを取得。
- すべての Azure サービスの標準 Azure モニターメトリクスを収集: Application Gateway、App Service (Web および Mobile)、Batch サービス、イベントハブ、IoT Hub、Logic App、Redis Cache、サーバーファーム (App Service プラン)、SQL データベース、SQL 可変プール、仮想マシンスケールセットなど。
- リージョン、リソースグループ、カスタム Azure タグなど関連リソースについての Azure 固有の情報を Azure メトリクスにタグ付け。
- Datadog が生成したメトリクスを取得し Azure 環境固有のインサイトを提供。
- ログ、メトリクス、APM トレーシング、ユーザーアクティビティなどの間および Datadog 組織内の Azure アプリケーションからのデータを関連付け。

この2番めに記載のある「すべての Azure サービスの標準 Azure モニターメトリクスを収集」にIoT Hubも含まれていますね！

では、早速AzureとのIntegrationを行っていきましょう。
公式ドキュメントによるとCLIとAzureポータルでの両方からインテグレーションが可能なようです。
ここではシンプルにCLIでやってみたいと思います。

Azure CLIがインストールされてない方は、[こちら](https://learn.microsoft.com/ja-jp/cli/azure/)を参考に自分の環境にCLIツールをインストールしておきましょう。
![Screenshot 2022-12-23 at 19.41.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/87659cb2-8865-5b80-e9a1-aadff1a7cd4b.png)

### Azureへの操作
以下のコマンドでログインします。

```
az login
```

ブラウザが開きログインを求められるので自分のアカウントでログインします。
![Screenshot 2022-12-23 at 19.45.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/1136a359-ca4e-b2e8-22e6-09e6c6d96fd2.png)

ログインに成功すると自分のアカウント情報が出力されると思います。
次に、サービスプリンシパルアプリケーションを作成します。以下のコマンドを実行しましょう。これは監視するサブスクリプションに対する``monitoring reader``ロールをサービスプリンシパルに付与します。
{subscription_id}には、前の手順で表示された``id``を設定します。
```
az ad sp create-for-rbac --role "Monitoring Reader" --scopes /subscriptions/{subscription_id}
```

アカウント情報が表示されない、または再度表示させたい場合は以下のコマンドを実行してください。
```
az account show
```

Integrationが完了するとAzureのActive Directoryに``所有しているアプリケーション``として先程コマンドラインから作成したアプリが表示されます。
![Screenshot 2022-12-23 at 21.29.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/530dd0a2-dfe3-342c-dc5d-4dab0898e56b.png)

アプリの詳細画面から``証明書とシークレット``を選択し、新しいクライアントシークレットを登録します。
説明は``datadogClientSecret``とします。
![Screenshot 2022-12-23 at 21.45.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/627e0113-d933-1678-c5ea-8c3d7bc80446.png)

### Datadogへの操作
IntegrationメニューからAzureのIntegrationを選び、[New App Registration]を選択します。
こちらに``クライアントID`` ``テナントID`` ``クライアントシークレット`` を入力します。
![Screenshot 2022-12-23 at 21.38.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/1544b908-cf12-2190-7911-79fc04734050.png)

メトリクスのフィルターはとりあえずそのまま空にしておきましょう。
Azure IoT Hubのメトリクスは [こちらから確認](https://docs.datadoghq.com/ja/integrations/azure_iot_hub/) できます。

最後に``Install Integration``をクリックします。
![Screenshot 2022-12-23 at 21.40.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/adb65a15-0a48-d620-5f41-ddb7f8dca9fb.png)

確かに前述の通り、AzureへのIntegrationをインストールしたら、同時にAzre IoT HubへのIntegrationも有効化されました。

![Screenshot 2022-12-25 at 13.07.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/0886c2e9-a5a8-3b1e-58bb-1cddb12b47fd.png)

### ダッシュボードで確認
Datadogの左側のメニューから [Dashboard] を選択します。
デフォルトで主要なサービスのダッシュボード（レイアウト）が用意されています。Azure IoT Hubも用意されているのでこちらを選択してみましょう。

![Screenshot 2022-12-25 at 13.09.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/83336773-f132-de36-782d-756127e0ac7d.png)

私の環境（Azure IoT Hub）では、1つのデバイスをクラウド上に作成済みなので、[Devices Registered] に1と表示されています。なお、物理デバイスは接続してないので、データは連携されておらず各チャートは空のままです、ごめんなさい。。。
いくつかのメジャーなメトリクスが予めレイアウトされており、すぐに使い始めることが可能です。

![Screenshot 2022-12-25 at 13.09.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/529b80d8-67b0-6a9b-1e3b-18f15aae2dd1.png)

ダッシュボードレイアウトをカスタマイズしたい場合、ダッシュボード左上にある [Clone dashboard] をクリックして（コピーして）編集することができます。

![Screenshot 2022-12-25 at 13.13.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/81226/895b532c-2f42-3695-24b0-0649b6629ed7.png)

### まとめ
いかがでしたでしょうか？Datadogでは非常に簡単にAzure IoT Hubの監視ができることが分かりましたね。
これで、IoTをEnterprise向けに運用する際も、安心して運用保守していけるのではないでしょうか。


### 参考リンク
[Azureポータル](https://portal.azure.com/)
[Azure IoT Hub ドキュメント](https://learn.microsoft.com/ja-jp/azure/iot-hub/)
[Datadog 無料トライアルアカウント](https://www.datadoghq.com/ja/free-datadog-trial/)
[DatadogとAzureのIntegration](https://docs.datadoghq.com/ja/integrations/azure/?tab=azurecliv20)
[DatadogとAzure IoT HubのIntegration](https://docs.datadoghq.com/ja/integrations/azure_iot_hub/)