はじめに
DynatraceでAzureと連携した場合のログの収集方法について紹介します。Azure のログはEvent Hubsを介してFunctionsがDynatraceに送信する方法を紹介します。
構成は少々面倒です。Agentの設定で収集というわけではありません。
前回、App Serviceを利用したサンプルを作成したのでそれを使います。
-
DynatraceでAzureを監視してみる。App Serviceのアプリケーションを可視化する。 - 技術的な何か。
はじめに Dynatraceでアプリケーションを可視化しようと思います。可視化することでフローや分析が行えます。 今回は可視化する方法を紹介します。 可視化するアプリケーションはApp Service
level69.net
ログの取得方法は今回紹介する方法に加え3つの方法があります。
- Dynatraceに直接送信する。
- 新規にActiveGateを使用して送信する。
- 既存のActiveGateを使用して送信する。
取得できるログが異なるので注意が必要です。
取得方法は下記を参考に行います。
-
Azure Logs — Dynatrace Docs
Use Azure log forwarding to ingest Azure logs.
www.dynatrace.com
前提条件
Azure CLIが利用できる環境があること(CloudShell、WSLなど)
すでにApp Serviceが構築されていること。
設定
手順は、Event Hubsの構築、App Serviceの設定、アクセストークンの作成、dynatrace-azure-log-forwarderのデプロイの順で行います。
Event Hubsとログの収集対象は同じリージョンにある必要があります。
Event Hubsの構築
Event Hubsを作成します。
Event Hubsの名前空間を作成します。
- 名前空間の名前:任意
- 場所:ログの取得対象と同じリージョン
- 価格レベル:Standard
パブリックアクセスを選択します。
イベントハブを作成します。
- 名前:任意
イベントハブで共有アクセスポリシーを追加します。
- ポリシー名:任意
- パーミッション:リッスン
作成後にポリシーを開き、接続文字列-主キーをメモしておきます。
App Serviceの設定
App Serviceでログをイベントハブに送信する設定を行います。
App Serviceを開き、診断設定を開き追加します。
ログ、メトリックはすべて選択します(送りたいログ)。
イベントハブへのストリームを選択し、上記で作成したイベントハブを選択します。
アクセストークンの作成
アクセストークンの作成を行います。スコープはIngest logsを選択します。
作成した、トークンは1度しか表示されないのでメモしておきます。
dynatrace-azure-log-forwarderのデプロイ
(WSLで実行しています)
環境変数を設定します。
DEPLOYMENT_NAME=<your_deployment_name> TARGET_URL=<your_environment_URL> TARGET_API_TOKEN=<your_API_token> RESOURCE_GROUP=<your_resource_group> EVENT_HUB_CONNECTION_STRING=<your_Event_Hub_connection_string>
注意:EVENT_HUB_CONNECTION_STRINGは””でくくる必要があります。
- DEPLOYMENT_NAME:Functionsの名前
- TARGET_URL:DynatraceのURL(例:https://iax12345.live.dynatrace.com/)
- TARGET_API_TOKEN:上記で作成したトークン
- RESOURCE_GROUP:Functionsの作成するリソースグループ(Functionsはリソースグループのリージョンになります)
- EVENT_HUB_CONNECTION_STRING:上記のイベントハブでメモしたもの
デプロイを実行します。
wget -q https://github.com/dynatrace-oss/dynatrace-azure-log-forwarder/releases/latest/download/dynatrace-azure-logs.sh -O dynatrace-azure-logs.sh && chmod +x ./dynatrace-azure-logs.sh \ && ./dynatrace-azure-logs.sh --deployment-name $DEPLOYMENT_NAME --target-url $TARGET_URL --target-api-token $TARGET_API_TOKEN --resource-group $RESOURCE_GROUP --event-hub-connection-string $EVENT_HUB_CONNECTION_STRING --use-existing-active-gate true --require-valid-certificate true
実行後
- Deployment complete. Check logs in Dynatrace in 10 min.
と表示されれば完了です。
10分後にログを確認します。
確認
ログを確認します。問題なく転送されていれば作業完了です。
まとめ
Azureのログを収集する方法はEvent HubsやFunctionsが必要となるので少々面倒です。
また、ログの量などによりコストも考慮する必要があるかもしれません。
問題なくログの取得も行えると思います。
今回は直接ログを送信しましたがほかの方法でも試したいを思います。