この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
今回はLog Analytics HTTP データコレクター APIの利用ケースとして、
Azure Functionsを利用してZoomのログをLog Analyticsにログデータを取り込む方法を紹介します。
Azure Functionsを利用してZoomのログをLog Analyticsにログデータを取り込む方法を紹介します。
Log Analytics HTTP データコレクター APIとは
参考: Log Analytics HTTP データコレクター API
HTTP通信を利用してログデータを収集することが可能なLog AnalyticsのAPIです。ログデータはJSON形式で受理されます。
HTTP通信を利用してログデータを収集することが可能なLog AnalyticsのAPIです。ログデータはJSON形式で受理されます。
また、APIアクセスを行うスクリプトの実行環境の通信要件としては、ログデータ送信のための外部へのHTTP通信が必要です。
Log Analyticsではサーバーのログ収集方法として、Syslogやカスタムログ機能による任意のログファイルの読み込みをサポートしています。
これらはエージェントをサーバーにインストールすることで機能しますが、
何らかの理由でエージェントをインストールできない環境にあったり、エージェントを介さずLog Analyticsにログを取り込みたい場合があるかと思います。
そのような場合はLog Analytics HTTP データコレクター APIの利用を検討できます。
Zoomのログデータ収集
Zoomのログデータを収集するAzure Functionsの構築やZoomの設定を行っていきます。
※前提事項
LogAnalyticsワークスペースがデプロイ済みの環境を想定しています。
今回Azure Functionsを利用しますがスクリプトは既に用意されているものを使います。
またLog AnalyticsのAPIのリクエスト方法について説明は行いません。必要な方は下記リンクのドキュメントを参考にしてください。
上の図はシステムの概要です。
データの流れとしては以下になります。
- ZoomのWebhookアプリがHTTPリクエストにのせてAzure Functionsにログデータを送信。
- Azure Functionsのスクリプトがログデータを整形後、LogAnalyticsのAPIに送信。
- LogAnalyticsがAPIで受信したログデータを取り込む。
1. Azure Functionsの構築
LogAnalyticsにログを送信するAzure Functionsを用意します。
デプロイには下記のGitHubレポジトリに公開されているARMテンプレートを利用します。
下記の「Deploy to Azure」ボタンをクリックし、AzureポータルのARMテンプレートのデプロイ画面に移動します。
表示されたパラメータに値を入力します。
・Function Name
Azure Functionsのリソース名です。
任意の文字列を設定できます。
・Custom Log Name
ここでは「Zoom」を設定します。
LogAnalytisに取り込むログに名前を設定します。
・Workspace ID
ログを取り込むLogAnalyticsのworkspaceIDです。
LogAnalyticsワークスペースの「エージェント管理」画面で表示されている「ワークスペースID」の値を設定します。
・Workspace Key
ログを取り込むLogAnalyticsのworkspaceKeyです。
LogAnalyticsワークスペースの「エージェント管理」画面で表示されている「主キー」の値を設定します。
・Zoom Verification
ここでは「None」を設定します。
パラメータを入力後「確認と作成」をクリックします。
ログを送信するAzure Functionsと、Workspace Keyを保護するKeyVaultが作成されます。
次に、Azure FunctionsからKeyVaultへのアクセスを許可するARMテンプレートをデプロイします。
下記の「Deploy to Azure」ボタンをクリックし、AzureポータルのARMテンプレートのデプロイ画面に移動します。
表示されたパラメータに以下の値を入力します。
・Function Name
アクセスを許可するAzure Functionsのリソース名を入力します。
最初のARMテンプレートのデプロイで設定した「Function Name」と同じ値を入力します。
パラメータを入力後「確認と作成」をクリックします。
2. Zoom Webhookアプリの設定
Zoomには外部システムとの連携のため、いくつか開発者向けのサービスが提供されています。
今回はWebhook-only Appという、アカウントのログデータを特定URLに自動送信するサービスを利用します。
無料プランでも利用可能です。(2021/07/29時点)
では設定方法をみていきましょう。
- https://marketplace.zoom.us/を開きます。
- 画面右上の「Develop」から「Build App」をクリックします。
- Webhook Onlyの「Create」をクリックします。
- 登録するWebhookの名前を入力後、「Create」をクリックします。任意の文字列で大丈夫です。
- 以下の項目を入力し、「Continue」をクリックします。
・Company Name・Name・Email Address - 「Event Subscriptions」のトグルをクリックします。
ここでログの送信先と、どのような利用履歴を送信するのかを設定します。 - 以下の項目を入力し、「Save」をクリックします。
・Subscription Name
設定の名前を入力します。・Event notification endpoint URL以下のURLを入力します。「<Azure Funtionsの名前>」は、Azure Functionsを構築したときのFunction Nameと同じ値に書き換えて下さい。https://<Azure Funtionsの名前>.azurewebsites.net/api/ZoomLogs・Add events取得したい情報を選択してください。 - 「Save」をクリックすると、Event Subscriptions画面が閉じられてVerification Tokenが生成されているのを確認できます。
このVerification Tokenをメモ帳などに保存してください。 -
「Continue」をクリックし、以下の画面に切り替わればZoom側の登録は完了です。
- Azureポータルを開きAzure Functionsの画面に移動します。
- 「構成」画面に移動し、ZoomVerification環境変数を編集します。
- 手順8で控えたVerification Tokenを値に入力し、「OK」をクリックします。
ここまでで設定作業は完了です。
3. Log Analyticsの確認
実際にログが収集できているか確認をします。
Zoomの空ミーティングを開催するなど、ログを出力させる操作を行って30分程度待った後、
Zoomの空ミーティングを開催するなど、ログを出力させる操作を行って30分程度待った後、
Log Analyticsのログ画面を確認します。
カスタムログにZoom_CLが表示されていることを確認できます。
次に、エディターにZoom_CLと入力して「実行」をクリックします。
ログが出力され、Log AnalyticsにZoomのログが取り込めたことを確認できました。