DatadogでAzureのログを収集する

 

Azureの取得されるログをDatadogに転送する事が出来ます。

今回はDatadogのサイト記載の内容に沿って、AzureのログをDatadogで収集する設定をしてみました。

https://docs.datadoghq.com/ja/integrations/azure/?tab=azurecliv20

設定は以下の順序で実施します。

      • Azure Event Hubを作成する
      • Azure Functionsを作成する
        • Azure Function(関数アプリ)を作成する
        • 実際にDataDogへログ転送するFunction(関数)を作成する
      • 診断設定でAzure Event Hubへログ転送設定する

AzureとDatadogの接続についてはこちらに記載しています。

DatadogとAzure接続してリソース取得

1.診断設定(Log転送先)で指定するAzure Event Hubを作成する

まず、最初にAzure Event Hubを作成します。

1)AzureのメニューでEvent Hubsを選択します。下記画面が表示されるので、追加をクリックします。

2)名前空間を作成します。リソースグループ名、Event Hub名、ロケーションを指定します。ロケーションはログの収集を行うリソースと同じロケーションを選択します。

価格レベルはBasicを選択します。

設定したら確認および作成を選択します。(なお、タグや可用性セットの設定を行う場合は、それぞれの画面で設定を行います。)

確認画面が表示されますので作成すればAzure Event Hubが作成されます。

3)作成したEvent Hubs名前空間を選択します。Event Hubsを選択すると下記画面が表示されますのでイベントハブを選択します。

4)イベントハブの作成画面が表示されますので名前を設定します。

これでAzure Event Hubの設定作業は完了です。

2.Azure Functions(関数アプリ)を作成する

Datadogへのログ転送はAzure Functions(関数アプリ)で行います。

Azure Functions(関数アプリ)のトリガーをEvent Hubとして作成します。Datadogへ転送するFunction(関数)を利用し、Event Hubを経由してDatadogへログ転送されます。

まずAzure Functions(関数アプリ)の作成を行います。

なお作成時にストレージアカウントが必要になりますので、必要に応じて事前に準備します。

1)Azure Function(関数アプリ)のメニューを選択します。下記画面が表示されますので追加をクリックします。

2)Azure Function(関数アプリ)の作成画面が表示されますので、リソースグループ名、関数アプリ名、ロケーション名を設定します。ランタイムスタック等は下記の値で設定を行います。

      • 公開:コード
      • ランタイムスタック;Node.js
      • バージョン:12LTS

3)ホスティングの設定を行います。ストレージアカウント名を選択します。事前に準備していない場合は新規作成を選択して作成します。

      • オペレーティングシステム:Winodws
      • プランの種類:消費量(サーバレス)

プランの種類は環境や利用状況に合わせて適時変更下さい。

 

4)必要に応じてApplication Insightの設定を行います。Datadogへのログ転送にあたってはどちらを選択しても問題ありません。(今回は”はい”を選択していますがどちで問題ありません。)

5)タグの画面が表示されますので必要に応じて設定を行います。

タグが必要なければそのまま確認および作成をクリックし次に進みます。

確認および作成画面が表示されますので、作成をクリックします。これでAzure Function(関数アプリ)の作成は完了です。

3.Datadogへログ転送を行うFunction(関数)を作成する

Datadogへのログ転送を行うFunction(関数)を作成します。

1)先ほど作成したAzure Functions(関数アプリ)を選択します。Function(関数)を選択すると下記画面が表示されますので追加をクリックします。

2)関数の追加画面が表示されます。Azure Event Hub Triggerを選択します。

開発環境を選択項目として表示された場合は、ポータルでの開発を選択します。

3)詳細画面が表示されますので、以下の通り設定します。

        • 新しい関数:関数名(任意)
        • Event Hub Name:作成したEvent Hub名

設定したらEvent Hub ConnectionでNewを選択します。

次の画面が表示されますので、事前に作成したEvent Hub名を指定します。設定したらOKを選択します。

これでFunction(関数)の箱が出来ました。次に環境変数の設定を行います。(Datadogサイトと順番が違います。今回は先に環境変数を設定します。)

4)Azure Functions(関数アプリ)のメニューで構成を選択すると下記画面が表示されます。新しいアプリケーション設定を選択します。

5)アプリケーション設定の追加/編集が表示されますので環境変数を追加します。

      • 名前;DD_API_KEY
      • 値:DatadogのAPI KEY(DatadogのIntegrations/APIs/APIKeysで確認される値)

これで環境変数の設定が終わりましたので、次に実際のFunction(関数)を作成します。

6)関数アプリ(Azure Functions)の画面で関数のメニューを選択する作成したFunction(関数)が表示されますので選択します。

7)コードとテストのメニューを選択すると下記画面が表示されます。Datadogへ転送するIndex.jsを作成します。

Index.jsを選択し、下記サイトのIndex.jsをコピーし下記画面のようにペーストして保存します。

https://github.com/DataDog/datadog-serverless-functions/blob/master/

azure/activity_logs_monitoring/index.js

8)トリガーの設定値を確認します。Function(関数)の画面で統合を選択すると下記画面されるのでトリガーを選択します。

トリガーの編集画面が表示されるので、以下の値を確認します。

      • Event parameter name:eventHubMessages
      • Event Hub cardinality:Many
      • Data Type:空白

 

これでFunction(関数)の設定は完了です。実際に送信されるのかテストしてみます。

9)Function(関数)の画面でコードとテストのメニューを選択し、テストと実行をクリックします。

下記画面が表示されるので、キーにmaster(Host Key)を選択し、実行をクリックします。

完了した際に下記メッセージが表示されていれば送信は完了です。

Datadog側でもLog受信の確認を行います。

LogsのメニューでSearchを選択すとLog Explorerが表示されます。下記のようにTest Messageと表示されていれば受信出来ています。

4.診断設定でEvent Hub(イベントハブ)への転送設定をする

実際にAzureのLogをDatadogに転送するのには、診断設定でEvent Hubへのログ転送設定が必要になります。

下記のように、イベントハブへのストリームを選択し、作成したEvent Hubを指定します。

これでAzureのLogをDatadogに転送する設定が完了です。