在本教學課程中,您會將 OpenTelemetry 收集器當作 Sidecar 容器新增至 Azure App Service 中的 Linux (自攜程式碼) 應用程式。 對於自訂容器,請參閱教學課程:在 Azure App Service 中設定自訂容器的 Sidecar 容器。
如果您沒有 Azure 帳戶,請在開始之前建立 免費帳戶 。
App Service 中的 Sidecar 容器可讓您將額外的服務和功能部署到 Linux 應用程式,而不需要將它們緊密結合至內建或自定義的主要容器。 Sidecar 容器會與相同 App Service 方案中的主要應用程式容器一起執行。
您可以在 App Service 中為每個 Linux 應用程式新增最多 9 個 Sidecar 容器。 例如,您可以將監視、記錄、設定和網路服務新增為 Sidecar 容器。 OpenTelemetry 收集器 Sidecar 是用於監視的一個範例。
1.設定所需的資源
首先,您需建立教學課程所使用的資源。 它們用於此特定案例,而一般來說 Sidecar 容器不需要。
在 Azure Cloud Shell 中,執行下列命令。 請務必提供
<environment-name>。git clone https://github.com/Azure-Samples/app-service-sidecar-tutorial-prereqs cd app-service-sidecar-tutorial-prereqs azd env new <environment-name> azd provision出現提示時,請提供您選擇的訂用帳戶和區域。 例如:
- 訂用帳戶:您的訂用帳戶。
- 區域:(歐洲) 西歐。
當部署完成時,您應該會看到下列輸出:
APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=... Azure container registry name = <registry-name> Managed identity resource ID = <managed-identity-resource-id> Managed identity client ID = <managed-identity-client-id> Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/<subscription-id>/resourceGroups/<group-name>
複製這些輸出值以供稍後使用。 您也可以在入口網站中、各個資源的管理頁面中找到它們。
附註
azd provision使用包含的範本來建立下列 Azure 資源:- 基於環境名稱的資源群組。
- 已部署兩個映像的容器登錄:
- 具有 OpenTelemetry 模組的 Nginx 映像。
- OpenTelemetry 收集器映像,設定為匯出至 Azure 監視器。
- 在資源群組上具有
AcrPull權限的使用者指派的受控識別 (用於從登錄中提取映像)。 - Log Analytics 工作區。
- Application Insights 元件。
2. 建立 Web 應用程式
在此步驟中,您需部署 ASP.NET Core 應用程式範本。 回到 Azure Cloud Shell 中,執行下列命令。 以唯一的應用程式名稱取代 <app-name>。
cd ~
dotnet new webapp -n MyFirstAzureWebApp --framework net8.0
cd MyFirstAzureWebApp
az webapp up --name <app-name> --os-type linux
幾分鐘後,此 .NET Web 應用程式會作為 MyFirstAzureWebApp.dll 部署到新的 App Service 應用程式。
3. 新增 Sidecar 容器
在本節中,您需將 Sidecar 容器新增至 Linux 應用程式。
在 Azure 入口網站中,導覽至應用程式的管理頁面
在應用程式的管理頁面中,從左側功能表選取 [部署中心]。
選取橫幅「有興趣新增容器來與您的應用程式一起執行嗎?按一下此處嘗試」。
當頁面重新載入時,請選取 [容器 (新增)] 索引標籤。
選取 [新增],然後設定新的容器,如下所示:
- 名稱:otel-collector
- 映像來源:Azure Container Registry
- 驗證:系統管理員認證
-
登錄:
azd provision所建立的登錄 - 映像:otel-collector
- 標籤:最新
選取 [套用]。
4. 設定環境變數
針對範例案例,otel-collector Sidecar 會設定為將 OpenTelemetry 資料匯出至 Azure 監視器,但是需要連接字元串作為環境變數 (請參閱 otel-collector 映像的 OpenTelemetry 組態檔)。
您可藉由設定應用程式設定,為容器 (像是任何 App Service 應用程式) 設定環境變數。 應用程式設定可供應用程式中的所有容器存取。
瀏覽至 App Service 應用程式的管理頁面。
從左側功能表中,選取 [環境變數]。
透過選取 [新增] 來新增應用程式設定,並按如下所示進行設定:
- 名稱:APPLICATIONINSIGHTS_CONNECTION_STRING
-
值:
azd provision輸出中的連接字串。 如果您遺失了 Cloud Shell 工作階段,您也可以在 Application Insight 資源的 [概觀] 頁面中的 [連接字串] 下找到它。
選取 [套用],然後選取 [套用],然後再選取 [確認]。
5. 在啟動時設定檢測
在此步驟中,您需根據 OpenTelemetry .NET 零程式碼檢測中概述的步驟來為您的應用程式建立檢測。
回到 Cloud Shell 中,使用下列幾行來建立 startup.sh。
cat > startup.sh << 'EOF' #!/bin/bash # Download the bash script curl -sSfL https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/latest/download/otel-dotnet-auto-install.sh -O # Install core files sh ./otel-dotnet-auto-install.sh # Enable execution for the instrumentation script chmod +x $HOME/.otel-dotnet-auto/instrument.sh # Setup the instrumentation for the current shell session . $HOME/.otel-dotnet-auto/instrument.sh export OTEL_SERVICE_NAME="MyFirstAzureWebApp-Azure" export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318" export OTEL_TRACES_EXPORTER="otlp" export OTEL_METRICS_EXPORTER="otlp" export OTEL_LOGS_EXPORTER="otlp" # Run your application with instrumentation OTEL_SERVICE_NAME=myapp OTEL_RESOURCE_ATTRIBUTES=deployment.environment=staging,service.version=1.0.0 dotnet /home/site/wwwroot/MyFirstAzureWebApp.dll EOF使用下列 Azure CLI 命令將此檔案部署至您的應用程式。 如果您仍在 ~/MyFirstAzureWebApp 目錄中,則不需要其他參數,因為
az webapp up已經為資源群組和應用程式名稱設定了預設值。az webapp deploy --src-path startup.sh --target-path /home/site/startup.sh --type static秘訣
此方法會將 startup.sh 檔案與您的應用程式分開部署。 如此一來,檢測組態會與您的應用程式程式碼分開。 不過,您可以使用其他部署方法來將指令碼與您的應用程式一起部署。
回到應用程式的管理頁面中,從左側功能表選取 [設定]。
將 [啟動命令] 設定為 /home/site/startup.sh。這是您在上一個步驟中部署至其中的相同路徑。
選取 [儲存],然後選取 [繼續]。
5. 在 Application Insights 中驗證
otel-collector Sidecar 現在應該將資料匯出至 Application Insights。
回到
https://<app-name>.azurewebsites.net的瀏覽器索引標籤,重新整理頁面數次以產生一些 Web 要求。回到資源群組概觀頁面,然後選取
azd up已建立的 Application Insights 資源。 您現在應該會在預設圖表中看到一些資料。
附註
在此非常常見的監視案例中,Application Insights 就是您可使用的其中一個 OpenTelemetry 目標,例如 Jaeger、Prometheus 和 Zipkin。
6. 清理資源
若不再需要此環境,您可以刪除資源群組及所有相關資源。 只要在 Cloud Shell 中執行下列命令:
cd ~/MyFirstAzureWebApp
az group delete --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down