このチュートリアルでは、OpenTelemetry コレクターをサイドカー コンテナーとして Azure App Service の Linux カスタム コンテナー アプリに追加する方法について説明します。
App Service のサイドカー コンテナーを使用すると、組み込みまたはカスタムのメイン コンテナーに緊密に結合することなく、追加のサービスと機能を Linux アプリにデプロイできます。 サイドカー コンテナーは、同じ App Service プランのメイン アプリケーション コンテナーと共に実行されます。
App Service の Linux アプリごとに、最大 9 つのサイドカー コンテナーを追加できます。 たとえば、監視、ログ、構成、ネットワーク サービスをサイドカー コンテナーとして追加できます。 OpenTelemetry コレクターのサイドカーは、監視のための一例です。
独自のコードを使用する Linux アプリについては、「チュートリアル: Azure App Service で Linux アプリのサイドカー コンテナーを構成する」を参照してください。
[前提条件]
-
Azure アカウントをお持ちでない場合は、開始する前に無料アカウントを作成してください。
このチュートリアルのコマンドは、ブラウザーを使用して Azure サービスを操作するために使用する対話型シェルである Azure Cloud Shell を使用して実行できます。 Cloud Shell を使用するには:
次の [Cloud Shell の起動 ] ボタンを選択するか、 https://shell.azure.com に移動してブラウザーで Cloud Shell を開きます。
必要に応じて Azure にサインインし、Cloud Shell の Bash 環境にいることを確認します。
任意のコード ブロックで [コピー] を選択し、コードを Cloud Shell に貼り付けて実行します。
このチュートリアルの
azd
コマンドでは、 Azure Developer CLI を使用します。これは、Azure でのアプリ リソースのプロビジョニングとデプロイを高速化するオープンソース ツールです。
1. チュートリアル リソースを設定する
サンプル リポジトリを複製し、このチュートリアルのリソースを作成するには、Cloud Shell で次のコマンドを実行します。 メッセージが表示されたら、使用する Azure サブスクリプションと Azure リージョンを選択します。
git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs
cd app-service-sidecar-tutorial-prereqs
azd env new my-sidecar-env
azd provision
azd provision
コマンドは、付属のテンプレートを使用して、次の Azure リソースを含む my-sidecar-env_group
という Azure リソース グループを作成します。
- 次のイメージを持つ 2 つのリポジトリを持つ コンテナー レジストリ 。
- OpenTelemetry モジュールを含む
nginx
イメージ。 - Azure Monitor にエクスポートするように構成された
otel-collector
OpenTelemetry コレクター イメージ。
- OpenTelemetry モジュールを含む
- Log Analytics ワークスペース。
- Application Insights コンポーネント。
- マネージド IDにはユーザーが割り当てた
id-my-sidecar-env_group
という名前があります。
デプロイが完了すると、次の例のような出力が表示されます。
Success!
APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=aaaaaaaa-0b0b-1c1c-2d2d-333333333333;IngestionEndpoint=https://eastus2-3.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus2.livediagnostics.monitor.azure.com/;ApplicationId=00001111-aaaa-2222-bbbb-3333cccc4444
Azure container registry name = acro2lc774l6vjgg
Managed identity resource ID = /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-sidecar-env_group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/id-my-sidecar-env_group
Managed identity client ID = 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/my-sidecar-env_group
このチュートリアルの後半で使用する APPLICATIONINSIGHTS_CONNECTION_STRING
の値をコピーして保存します。
Open resource group in the portal
のリンクを選択して、プロビジョニングされたリソース グループを Azure portal で開きます。
2. サイドカー対応アプリを作成する
Azure portal のリソース グループで、サイドカーをサポートする Linux カスタム コンテナー アプリを作成し、メイン コンテナーを構成します。
Azure portal のリソース グループのページで、[ 作成] を選択します。
[Marketplace] ページで Web アプリを検索し、[Web アプリで作成] タイルの横にある下矢印を選択し、[Web アプリ] を選択します。
[Web アプリの作成] ページの [基本] タブで、次の情報を指定します。
- 名前: Web アプリの一意の名前を入力します。
- 発行: [コンテナー] を選択します。
- オペレーティング システム: Linux を選択 します。
- リージョン:
azd provision
に選択したのと同じリージョンを選択します。 - Linux プラン: 指定された (新規) App Service プランを選択します。
残りの設定はそのままにして、ページの上部にある [コンテナー ] タブを選択します。
[ コンテナー ] タブで、次の情報を指定します。
- サイドカーのサポート: サイドカーのサポートがオンになっている拡張構成に設定します。
- イメージ ソース: Azure Container Registry を選択します。
- 名前: メイン が表示されていることを確認します。
- レジストリ:
azd provision
によって作成されたレジストリを選択します。 - 認証: [マネージド ID] を選択します。
- ID:
azd provision
によって作成されたマネージド ID を選択します。 - 画像: 「nginx」を入力してください。
- タグ: 最新の情報を入力します。
- ポート: まだ設定されていない場合 は「80 」と入力します。
注
これらの設定は、サイドカー対応アプリでは、サイドカーに対して有効になっていないアプリとは異なる方法で構成されます。 詳細については、「 サイドカー対応カスタム コンテナーの相違点」を参照してください。
[確認および作成] を選択し、検証に成功したら [作成] を選択します。
デプロイが完了したら、[リソースに移動] を選択します。
アプリのページで、[ 既定のドメイン]
https://<app-name>.azurewebsites.net
の横にある URL を新しいブラウザー タブで開き、既定の nginx ページを表示します。
3. サイドカー コンテナーをアプリに追加する
サイドカー コンテナーを Linux カスタム コンテナー アプリに追加します。
Azure ポータルのアプリのページで、左側のナビゲーション メニューで [デプロイメント] の下にある デプロイメント センター を選択します。 [Deployment Center] ページには、アプリ内のすべてのコンテナーが表示され、現在はメイン コンテナーのみが表示されます。
追加>カスタムコンテナを選択します。
[ コンテナーの追加 ] ウィンドウで、次の情報を入力します。
- 名前: 「otel-collector」と入力します。
- イメージ ソース: Azure Container Registry を選択します。
- レジストリ:
azd provision
によって作成されたレジストリを選択します。 - 認証: [マネージド ID] を選択します。
- ID: [ ユーザー割り当て済み] で、
azd provision
によって作成されたマネージド ID を選択します。 - 画像: otel-collector を入力します。
- 画像タグ: 最新の情報を入力します。
- ポート: 「4317」と入力します。
[ 適用] を選択します。
デプロイ センターには、 Main と Sidecar というラベルが付いた 2 つのコンテナーが存在するようになりました。 アプリには 1 つのメイン コンテナーが必要であり、複数のサイドカー コンテナーを持つことができます。
4. 環境変数を構成する
サンプル シナリオでは、接続文字列を環境変数として使用して OpenTelemetry データを Azure Monitor にエクスポートするように、 otel-collector
サイドカーが構成されています。 詳細については、 otel-collector イメージの OpenTelemetry 構成ファイルを参照してください。
アプリの アプリ設定 を構成して、コンテナーの環境変数を構成します。 アプリ設定は、アプリ内のすべてのコンテナーからアクセスできます。
Azure portal のアプリのページで、左側のナビゲーション メニューの [設定] で [環境変数] を選択します。
[環境変数] ページの [アプリ設定] タブで、[追加] を選択します。
[アプリケーション設定の 追加/編集] ウィンドウで、次の値を入力します。
- 名前: APPLICATIONINSIGHTS_CONNECTION_STRING
- 値:
azd provision
の出力からのAPPLICATIONINSIGHTS_CONNECTION_STRING
の値。 この値は、リソース グループの Application Insight リソースの [概要] ページでも接続文字列として見つけることができます。
[ 適用] を選択し、もう一度 [適用 ] を選択して、[ 確認] を選択します。 APPLICATIONINSIGHTS_CONNECTION_STRINGアプリ設定が [アプリ設定] タブに表示されるようになりました。
注
一部のアプリ設定は、サイドカー対応アプリには適用されません。 詳細については、「 サイドカー対応カスタム コンテナーの相違点」を参照してください。
5. Application Insights で検証する
otel-collector
サイドカーは、Application Insights にデータをエクスポートする必要があります。
新しいブラウザー タブでアプリに移動し、ページを数回更新して、いくつかの Web 要求を生成します。
Azure portal のリソース グループ ページで、 Application Insights リソースを選択します。 Application Insights の [概要 ] ページの既定のグラフにデータがいくつか表示されます。
注
この一般的な監視シナリオでは、Application Insights は、Jaeger、Prometheus、Zipkin など、使用できる OpenTelemetry ターゲットの 1 つに過ぎません。
6.リソースをクリーンアップする
このチュートリアル用に作成した環境が不要になったら、リソース グループを削除すると、アプリ サービスとすべての関連リソースが削除されます。 Cloud Shell の複製されたリポジトリで次のコマンドを実行します。
azd down