診断設定を使って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 Hubs)から構成されます。
イメージで言うと名前空間は、イベントハブ(Event Hubs)を収容する為の箱(コンテナー)になります。
イベントハブ(Event Hubs)はデータを受信、送信するためのアクセスポイント(実体)になります。
イベントハブ(Event Hubs)のリソースは名前空間内に作成します。

Azure Event Hubs名前空間作成

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

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

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

※検証目的の設定です。実際の利用用途や利用量に応じて設定します。

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

イベントハブ(Event Hubs)作成

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

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

関数アプリ(Azure Function App)のリソース作成

関数アプリ(Azure Function App)とは

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

Azure Functions の概要

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

関数アプリ(Azure Function App)リソース作成

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

※検証目的の設定です。利用用途に応じて設定値は適時選択してください。

関数アプリ(Azure Function App)作成
関数アプリで作成を選択します。

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

※公式サイトではNode.jsのバージョンが16LTSとなっていますが、リタイヤ間近なので18LTSを選択しています。

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

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

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

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

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

使用量クオータ設定

関数アプリ(Azure Function App)の従量課金(Serverless)は利用量に応じて課金が発生します。
使用量クオータを設定しておくことで想定しない課金を防ぐことが出来ます。

Azure Functions の価格

※検証目的なので上限を設定しています。今回は仮で10000GB/秒で設定しています。(値はかなり適当です。)

使用量クオータ設定
関数アプリで構成のリソースメニューを選択します。
関数のランタイム設定タブにある日ごとの使用量クオータに10000と入力し保存します。
再起動確認で続行を選択します。

関数(Functions)作成

コードを記載する関数(Functions)のリソースを作成します。
関数名はDatadogTriggerとしています。
Azure Event Hubs トリガーの詳細についてはマイクロソフト公式サイトを参照ください。

Azure Functions の Azure Event Hubs トリガー

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

DatadogのAPI Key確認方法

Datadog のAPI Key確認はOrganization SettingsのAPI Keyのメニューから出来ます。

API Key確認
Organization SettingssのAPI Keyを選択します。
API Keyの一覧が表示されます。
確認したいAPI Keyを選択します。
API Keyをコピーして確認出来ます。

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

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

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

名前はDD_API_KEYとします。
値にはDatadogの接続先URLを設定します。

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

アプリケーション設定が終わったら保存します。
再起動確認は続行を選択します。

※実環境での利用時はAzure Key Vaultでのシークレット化などセキュリティ面も考慮します。

Datadog-Azure関数(Functions)コードを設定

作成した関数(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:空白

関数(Functions)のテスト

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

ログ送信テスト

関数(Functions)でテストと実行を選択します。
ボディに"Test Message"と入力します。
実行を選択します。

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

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

Azure アクテビティログをDatadogに送信

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

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

アクティビティログの診断設定はモニターから出来ます。

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

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

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

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

※画面のログサンプルは仮想マシン(Azure VM)を起動した際のログです。

最後に

今回はアクテビティログを例にAzureリソースのログをDatadogに送る為の設定をやってみました。
自動のスクリプトも用意されていますが今回は設定確認を含めて手動でリソースを作成しています。
イベントハブ(Event Hubs)、関数アプリ(Azure Function App)を利用してDatadogへリソースのログを転送する事が出来ました。
Azureリソースのログ転送は診断設定で出来るので簡単にDatadogへログ転送出来ました。
今後もDatadogについて色々試してみたいと思います。

DatadogへのAzure テナント登録手順についてはこちらに纏めています。

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

スポンサーリンク