本教學課程說明如何在 Azure App Service 中將 OpenTelemetry 收集器新增為 Sidecar 容器至 Linux 自定義容器應用程式。
App Service 中的 Sidecar 容器可讓您將額外的服務和功能部署到 Linux 應用程式,而不需要將它們緊密結合至內建或自定義的主要容器。 Sidecar 容器會與相同 App Service 方案中的主要應用程式容器一起執行。
您可以在 App Service 中為每個 Linux 應用程式新增最多 9 個 Sidecar 容器。 例如,您可以將監視、記錄、設定和網路服務新增為 Sidecar 容器。 OpenTelemetry 收集器側車是用於監視的一個範例。
如需自備程式碼 Linux 應用程式,請參閱教學課程:在 Azure App Service 中設定 Linux 應用程式的側車容器。
先決條件
-
如果您沒有 Azure 帳戶,請在開始之前建立 免費帳戶 。
您可以使用 Azure Cloud Shell 來執行本教學課程中的命令,這是您透過瀏覽器用來處理 Azure 服務的互動式殼層。 若要使用 Cloud Shell:
選取下列 [ 啟動 Cloud Shell ] 按鈕,或移至在 https://shell.azure.com 瀏覽器中開啟 Cloud Shell。
如有必要,請登入 Azure,並確定您位於 Cloud Shell 的 Bash 環境中。
選取 [在任何程式代碼區塊中 複製 ],將程式代碼貼到CloudShell中,然後加以執行。
azd本教學課程中的命令會使用 Azure 開發人員 CLI,這是一種開放原始碼工具,可加速在 Azure 上布建和部署應用程式資源。
1.設定教學課程資源
若要複製範例存放庫並建立本教學課程的資源,請在CloudShell中執行下列命令。 出現提示時,請選取您想要使用的 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此命令會使用包含的範本來建立名為 my-sidecar-env_group 的 Azure 資源群組,其中包含下列 Azure 資源:
- 兩個存放庫的容器登錄,包含以下映像:
-
nginx具有 OpenTelemetry 模組的映像檔。 -
otel-collectorOpenTelemetry 收集器映像,設定為匯出至 Azure 監視器。
-
- Log Analytics 工作區。
- Application Insights 元件。
- 名為 的使用者指派
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 入口網站中開啟已佈建的資源群組。
2. 建立已啟用側車的應用程式
在 Azure 入口網站的資源群組中,建立具有 Sidecar 支援的 Linux 自定義容器應用程式,並設定主要容器。
在 Azure 入口網站的資源群組頁面上,選取 [ 建立]。
在 [Marketplace] 頁面上,搜尋 Web 應用程式,選取 [Web 應用程式] 圖格上 [建立] 旁的向下箭號,然後選取 [Web 應用程式]。
在 [建立 Web 應用程式] 頁面的 [基本] 索引標籤上,提供下列資訊:
- 名稱:輸入 Web 應用程式的唯一名稱。
- 發佈:選取 [容器]。
- 作系統:選取 [Linux]。
-
區域:選取您選擇的
azd provision相同區域。 - Linux 方案:選取提供的 (新增) App Service 方案。
保留其餘的設定,然後選取頁面頂端的 [容器 ] 索引標籤。
在 [ 容器] 索引標籤上,提供下列資訊:
- Sidecar 支援:設定為 增強設定,並開啟 Sidecar 支援。
- 在 [映像來源] 中,選取 [Azure Container Registry]。
- 名稱:請確定 主要 出現。
-
登錄:選取由
azd provision所建立的登錄。 - 驗證:選取 [受控識別]。
-
身分識別:選擇由
azd provision創建的受管理身分。 - 映像:輸入 nginx。
- 標籤:輸入 最新。
- 埠:如果尚未設定 ,請輸入 80 。
附註
這些設定在啟用側車的應用程式中設定的方式與未針對側車啟用的應用程式不同。 如需詳細資訊,請參閱已啟用側車的自訂容器有何差異。
選取 [檢閱 + 建立],並在驗證通過時選取 [建立]。
部署完成後,請選取 [前往資源]。
在應用程式的頁面上,開啟位於 預設網域 旁邊的 URL,
https://<app-name>.azurewebsites.net並在新的瀏覽器分頁中查看預設的 nginx 頁面。
3.將側車容器新增至應用程式
將 Sidecar 容器新增至 Linux 自訂容器應用程式。
在 Azure 入口網站的應用程式頁面上,選取左側導覽功能表中 [部署] 底下的 [部署中心]。 [部署中心] 頁面會顯示應用程式中的所有容器,目前只有主要容器。
選取 [容器] 。
選取 [新增>自定義容器]。
在 [ 新增容器] 窗格中,完成下列資訊:
- 名稱:輸入 otel-collector。
- 映射來源:選取 [Azure Container Registry]。
-
登錄:選取由
azd provision所建立的登錄。 - 驗證:選取 [受控識別]。
-
身分識別:在 [使用者指派] 底下,選取 所建立的
azd provision受控識別。 - 圖片:輸入 otel-collector。
- 影像標籤:輸入 最新版本。
- 埠:輸入 4317。
選取 [套用]。
部署中心現在有兩個容器標示為 Main 和 Sidecar。 應用程式必須有一個主要容器,而且可以有多個側車容器。
4. 設定環境變數
在範例案例中 otel-collector ,Sidecar 已設定為使用連接字串作為環境變數,將 OpenTelemetry 數據匯出至 Azure 監視器。 如需詳細資訊,請參閱 otel-collector 映像的 OpenTelemetry 組態檔。
透過應用程式 設定 ,設定容器的環境變數。 應用程式設定可供應用程式中的所有容器存取。
在 Azure 入口網站的應用程式頁面上,選取左側導覽功能表中 [設定] 底下的 [環境變數]。
在 [環境變數] 頁面的 [應用程式設定] 索引標籤上,選取 [新增]。
在 [ 新增/編輯應用程式設定 ] 窗格上,輸入下列值:
- 名稱:APPLICATIONINSIGHTS_CONNECTION_STRING
-
值:由
APPLICATIONINSIGHTS_CONNECTION_STRING的輸出所得的azd provision值。 您也可以在資源群組 Application Insight 資源的 [概觀] 頁面上找到此值作為連接字串。
選取 [套用],然後再次選取 [ 套用 ],然後選取 [ 確認]。 APPLICATIONINSIGHTS_CONNECTION_STRING應用程式設定現在會出現在 [應用程式設定] 索引標籤上。
附註
某些設定不適用於啟用側車功能的應用程式。 如需詳細資訊,請參閱已啟用側車的自訂容器有何差異。
5. 在 Application Insights 中驗證
otel-collector 側車現在應該會將資料匯出至 Application Insights。
在新的瀏覽器索引標籤中移至您的應用程式,並重新整理頁面幾次,以產生一些 Web 要求。
在 Azure 入口網站的 [資源群組] 頁面上,選取 Application Insights 資源。 您現在應該會在應用程式洞察概觀頁面上的預設的圖表中看到一些數據。
附註
在此常見的監視案例中,Application Insights 只是您可以使用的其中一個 OpenTelemetry 目標,例如 Jaeger、Prometheus 和 Zipkin。
6.清除資源
當您不再需要為本教學課程建立的環境時,您可以刪除資源群組,這會移除App Service和所有相關資源。 在 Cloud Shell 中複製的存放庫中執行下列命令。
azd down