Azure Functionsを利用してZoomのログをLog Analyticsに取り込む

今回はLog Analytics HTTP データコレクター APIの利用ケースとして、
Azure Functionsを利用してZoomのログをLog Analyticsにログデータを取り込む方法を紹介します。
 

Log Analytics HTTP データコレクター APIとは

参考: Log Analytics HTTP データコレクター API
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のリクエスト方法について説明は行いません。必要な方は下記リンクのドキュメントを参考にしてください。
上の図はシステムの概要です。
データの流れとしては以下になります。
  1.  ZoomのWebhookアプリがHTTPリクエストにのせてAzure Functionsにログデータを送信。   
  2. Azure Functionsのスクリプトがログデータを整形後、LogAnalyticsのAPIに送信。
  3. 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時点)
 
 
では設定方法をみていきましょう。
 
  1. https://marketplace.zoom.us/を開きます。
  2. 画面右上の「Develop」から「Build App」をクリックします。
  3. Webhook Onlyの「Create」をクリックします。
  4. 登録するWebhookの名前を入力後、「Create」をクリックします。任意の文字列で大丈夫です。
  5. 以下の項目を入力し、「Continue」をクリックします。   
    ・Company Name
    ・Name
    ・Email Address

  6. 「Event Subscriptions」のトグルをクリックします。
    ここでログの送信先と、どのような利用履歴を送信するのかを設定します。
  7. 以下の項目を入力し、「Save」をクリックします。   
    ・Subscription Name
     設定の名前を入力します。   
    ・Event notification endpoint URL
     以下のURLを入力します。「<Azure Funtionsの名前>」は、Azure Functionsを構築したときのFunction Nameと同じ値に書き換えて下さい。   
     https://<Azure Funtionsの名前>.azurewebsites.net/api/ZoomLogs
    ・Add events
     取得したい情報を選択してください。
  8. 「Save」をクリックすると、Event Subscriptions画面が閉じられてVerification Tokenが生成されているのを確認できます。   
    このVerification Tokenをメモ帳などに保存してください。
  9. 「Continue」をクリックし、以下の画面に切り替わればZoom側の登録は完了です。
  10. Azureポータルを開きAzure Functionsの画面に移動します。
  11. 「構成」画面に移動し、ZoomVerification環境変数を編集します。
  12. 手順8で控えたVerification Tokenを値に入力し、「OK」をクリックします。
ここまでで設定作業は完了です。
 

3. Log Analyticsの確認

実際にログが収集できているか確認をします。
Zoomの空ミーティングを開催するなど、ログを出力させる操作を行って30分程度待った後、
Log Analyticsのログ画面を確認します。

カスタムログにZoom_CLが表示されていることを確認できます。
次に、エディターにZoom_CLと入力して「実行」をクリックします。

ログが出力され、Log AnalyticsにZoomのログが取り込めたことを確認できました。
  
いいね (←参考になった場合はハートマークを押して評価お願いします)
読み込み中...

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、当社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。

※当サイトはマイクロソフト社によるサポートページではございません。パーソルプロセス&テクノロジー株式会社が運営しているサイトのため、マイクロソフト社によるサポートを希望される方は適切な問い合わせ先にご確認ください。
 【重要】マイクロソフト社のサポートをお求めの方は、問い合わせ窓口をご確認ください