診断設定を使ってDatadogへのAzure リソース ログを送信する手順

2020-09-19Azure,Datadog,Others

Azure リソース ログをDatadogへ送信するための手順です。
アクティビティログを例に手順を確認しています。

診断設定などで取得されるAzureのリソース ログは、Datadogに送信して監視に利用することができます。
Azure Event HubsやAzure Function Appsのリソース作成・設定から、Azureリソースの診断設定、Datadogでのログ確認までをまとめています。

Azureテナント(サブスクリプション)とDatadogの接続手順については、こちらで紹介しています。

スポンサーリンク

Azure Event Hubsのリソースを作成

公式サイト手順

Datadog公式サイトの手順を参考に、作業を進めます。

Microsoft Azure(Datadog公式サイト)

自動でリソースを作成する方法もありますが、今回は理解を深めるために手動で設定しています。

Azure Event Hubsとは

Azure Event Hubsは、大量のデータをリアルタイムで収集、処理、保存することを目的として提供されているサービスです。
今回は、Azureリソースのログ収集に利用します。

Azure Event Hubs
名前空間

少しややこしいのですが、Azure Event Hubsは”Azure Event Hubs 名前空間"と"イベントハブ(Event Hub)"から構成されます。
イメージとしては、名前空間はイベントハブを収容するための箱(コンテナー)です。
イベントハブ(Event Hub)はデータを受信・送信するためのアクセスポイント(実体)となります。
イベントハブのリソースは、名前空間内に作成します。

Azure Event Hubs 名前空間のリソースを作成

Azure Event Hubs 名前空間のリソースを作成します。
リソース名は"test-datadog"としています。

※手順は検証目的の設定値としています。実際の利用用途や利用量に応じて適切に設定してください。

Event Hubsのリソースを作成
Event Hubsで作成を選択します。

名前空間の名前や場所を設定します。
価格レベルはBasicを選択しています。
スループットユニットは1に設定しています。

詳細設定はデフォルト値のまま変更せず、次へ進みます。
ネットワーク設定もデフォルト値のまま変更せず、次へ進めます。
確認画面で作成を選択します。

イベントハブ(Event Hub)を作成

イベントハブ(Event Hub)を作成します。
イベントハブはEvent Hubs 名前空間リソース内に作成します。
イベントハブ名はDatadog-01としています。

イベントハブ(Event Hubs)作成
Event Hubs 名前空間のリソースメニューでEvent Hubsを選択します。
イベントハブを作成します。
名前を入力します。
それ以外の設定はデフォルト値のままとします。
確認および作成を選択します。

—広告—

Azure Function Appsのリソースを作成

Azure Function Appsとは

Azure Function Appsは、関数(Azure Functions)を実行するサーバーレスのサービス実行環境です。
イベントに応答してコードを自動的に実行するマネージドサービスです。

Azure Functions の概要

イベントハブ(Event Hub)で受信したデータをDatadogに送信する役割を担います。

Azure Function Appsのリソースを作成

Azure Function Appsのリソースを作成します。
プランは従量課金(Serverless)を選択しています。
リソース名はfunc-test-datadogとしています。

※手順は検証目的の設定値としています。実際の利用用途や利用量に応じて適切に設定してください。

Azure Function Appsのリソースを作成
関数アプリで作成を選択します。

基本設定画面です。
関数アプリ名を入力し、コードを選択します。
ランタイムスタックはNode.jsを選択します。
オペレーティングシステムはWindowsを選択します。
HostingはConsumption(Serverless)を選択します。

※記事記載時点では、公式サイトではNode.jsのバージョンが16 LTSとなっていました。サポート終了が近いため、今回は18 LTSを選択しています。

ストレージアカウントの指定が必須となっています。
今回はtestdatadogという名前で新規にストレージアカウントを作成します。

ネットワーク設定はデフォルト値(オン)のままにしています。

Application Insightsは無効を選択します。

※今回は検証目的のため、無効を選択しています。

デプロイ設定はデフォルト値(無効化)のままとしています。
確認および作成画面に進み、リソースを作成します。

Azure Functionsの使用量クオータ設定

Azure Functions(関数アプリ)の従量課金(Serverless)プランでは、利用量に応じて課金が発生します。
検証時には想定外の課金を防ぐために、使用量クオータを設定しておいた方がよいでしょう。

Azure Functions の価格

※今回は検証目的のため、使用量の上限を設定しています。今回は仮に10,000で設定しています。(この値は仮に設定したものです。)

使用量クオータ設定
関数アプリのリソースメニューで構成を選択します。
関数のランタイム設定タブで、日ごとの使用量クオータ欄に10,000と入力し、保存します。
再起動確認メッセージが表示されます。
続行を選択します。

関数(Functions)のリソースを作成

コードを記述する関数(Functions)のリソースを作成します。
関数名はDatadogTriggerとしています。

Azure Event Hubsトリガーの詳細については、マイクロソフト公式サイトを参照してください。

Azure Functions の Azure Event Hubs トリガー

関数(Functions)のリソースを作成
関数アプリのリソースメニューで関数を選択します。
作成を選択します。
テンプレートの種類でAzure Event Hub triggerを選択します。テンプレートの詳細設定にあるEvent Hub connectionでNewを選択します。
新しいイベントハブ接続の作成画面で、イベントハブを選択します。各項目には、事前に作成したイベントハブ(Event Hub)の値を設定します。
テンプレートの詳細設定が完了したら、作成を選択します。

DatadogのAPI Key値を確認

DatadogのAPI Key値は、Organization SettingsのAPI Keysメニューから確認できます。

API Keyを確認
Organization SettingsのAPI Keysを選択します。
API Keyの一覧が表示されます。
値を確認したいAPI Keyを選択します。
API Key値をコピーして確認できます。

アプリケーション設定の追加

関数(Functions)で使用するDatadogの設定値をアプリケーション設定に登録します。

    • アプリケーション設定
      • DD_API_KEY:Datadogで発行したAPI Key値を設定
      • DD_SITE:Datadogの接続先URLを設定
アプリケーション設定
関数アプリのリソースメニューで構成を選択します。
アプリケーション設定のタブで新しいアプリケーション設定を選択します。
名前はDD_API_KEYとします。
値にはDatadogのAPI Key値を入力します。

名前はDD_SITEとします。
値にはDatadogの接続先URLを入力します。

※日本リージョンの場合はap1.datadoghq.comとなります。

アプリケーション設定が完了したら、設定を保存します。
再起動確認メッセージが表示されます。
続行を選択します。

※今回は検証目的での設定です。アプリケーション設定値の管理にAzure Key Vaultなどのシークレット管理するなど、セキュリティ面も考慮します。

Datadog-Azure用の関数コードを設定

作成した関数(Functions)にDatadog-Azure用の関数コードを設定します。

手順:Datadog Azure 関数
コード:index.js

Datadog-Azure用の関数コードを設定
作成した関数(Functions)を選択します。

index.jsに、リンク先からコピーしたDatadog-Azure用の関数コードを貼り付けます。

index.js

保存を選択します。

統合で設定値を確認します。
トリガーを選択します。
Event Hub data typeに値が入力されている場合は空白にします。

  • 確認する設定値
    • Event parameter name:eventHubMessages
    • Event Hub cardinality:Many
    • Event Hub Data Type:空白

Datadogへログが送信できるか関数(Functions)でテスト

Datadogへログが送信できるかテストします。

ログ送信のテスト

関数(Functions)でテストと実行を選択します。
ボディには"Test Message"とダブルクォーテーションで囲んで入力します。
実行を選択します。

※ダブルクォーテーションが無い場合、エラーになります。

出力で202 Acceptedと表示されていることを確認します。
DatadogのLogsでログを確認します。
Test Messageが表示されていることを確認します。

—広告—

診断設定を利用してAzure アクティビティログをDatadogに送信

DatadogにAzureリソースのログを送信する場合は、診断設定を利用します。
診断設定の宛先としてイベントハブ(Event Hubs)を選択します。

アクティビティログの診断設定

アクティビティログの診断設定は、Azureポータルのモニターから行うことができます。

アクティビティログの診断設定
モニターのリソースメニューでアクティビティログを選択します。
アクティビティログをエクスポートを選択します。
診断設定を追加するを選択します。
診断設定の名前を入力します。
送信するログカテゴリにチェックを入れます。
宛先の詳細でイベントハブへのストリーミングを選択します。作成したイベントハブ(Event Hub)のリソースを選択し、保存をクリックします。

アクティビティログの受信をDatadogで確認

受信したアクティビティログをDatadogのLogsで確認します。

Datadogでログを表示
Datadogで受信したアクティビティログを確認します。
ログが正常に取り込まれていることが確認できます。

※画面サンプルは、仮想マシンを起動した際のアクティビティログです。

最後に

今回はアクティビティログを例に、Azureで取得されるログをDatadogに送信するための設定手順を確認しました。
自動化されたスクリプトも用意されていますが、今回は設定内容の確認を兼ねて手動でリソースを作成しています。
Azure Event HubsやAzure Functions(関数アプリ)を利用することで、Datadogへリソースのログを転送することができました。
Azureリソースのログ転送は診断設定から行えるため、手軽にDatadogへログを転送できます。

引き続き、いろいろ試してみたいと思います。

DatadogへのAzure テナント登録手順については、こちらで紹介しています。

Datadog Agentを利用した仮想マシンのログ転送設定手順については、こちらで紹介しています。

スポンサーリンク