教學課程:在 Azure App 服務 中設定自定義容器的 Sidecar 容器
在本教學課程中,您會將 OpenTelemetry 收集器新增為側車容器至 Azure App 服務 中的 Linux 自定義容器應用程式。 如需自備程式代碼 Linux 應用程式,請參閱教學課程:在 Azure App 服務 中設定 Linux 應用程式的側車容器。
在 Azure App 服務 中,您可以為每個已啟用 Sidecar 的自定義容器應用程式新增最多 9 個 Sidecar 容器。 Sidecar 容器可讓您將額外的服務和功能部署到容器應用程式,而不需將它們與主要應用程式容器緊密結合。 例如,您可以將監視、記錄、設定和網路服務新增為 Sidecar 容器。 OpenTelemetry 收集器 Sidecar 是這類監視範例之一。
如需 App Service 中側容器的詳細資訊,請參閱:
如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶。
1.設定所需的資源
首先,您會建立教學課程所使用的資源。 它們用於此特定案例,而一般來說 Sidecar 容器不需要。
在 Azure Cloud Shell 中,執行下列命令:
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
出現提示時,請提供您想要的訂用帳戶和區域。 例如:
- 訂用帳戶:您的訂用帳戶。
- 地區: (歐洲)西歐。
當部署完成時,您應該會看到下列輸出:
APPLICATIONINSIGHTS_CONNECTION_STRING = InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=... Open resource group in the portal: https://portal.azure.com/#@/resource/subscriptions/.../resourceGroups/...
在瀏覽器索引標籤中開啟資源群組連結。您稍後必須使用連接字串。
注意
azd provision
使用包含的範本來建立下列 Azure 資源:- 稱為 my-sidecar-env_group 的資源群組。
- 已部署兩個映像的容器登錄:
- 具有 OpenTelemetry 模組的 Nginx 映像。
- OpenTelemetry 收集器映像,設定為匯出至 Azure 監視器。
- Log Analytics 工作區
- Application Insights 元件
2.建立已啟用 Sidecar 的應用程式
在資源群組的管理頁面中,選取 [建立]。
搜尋 Web 應用程式,然後選取 [建立] 上的向下箭號,然後選取 [Web 應用程式]。
如下所示,設定 [基本資料] 面板:
- 名稱︰唯一的名稱。
- 發佈:容器
- 作業系統:Linux
- 區域:與您使用
azd provision
選擇的區域相同 - Linux 方案:新的 App Service 方案
選取 [容器]。 如下所示,設定 [容器] 面板:
- Sidecar 支援:已啟用
- 映像來源:Azure Container Registry
- 登錄:
azd provision
所建立的登錄 - 映像:nginx
- 標籤:最新
- 連接埠:80
注意
這些設定會以不同方式在啟用 Sidecar 的應用程式中設定。 如需詳細資訊,請參閱已啟用 Sidecar 的應用程式差異。
選取 [檢閱 + 建立],然後選取 [建立]。
部署完成後,請選取 [前往資源]。
在新的瀏覽器索引標籤中,瀏覽至
https://<app-name>.azurewebsites.net
並查看預設 Nginx 頁面。
3.新增 Sidecar 容器
在本節中,您會將 Sidecar 容器新增至自訂容器應用程式。
在應用程式的管理頁面中,從左側功能表選取 [部署中心]。
部署中心會顯示應用程式中的所有容器。 現在,它只有主要容器。
選取 [新增],然後設定新的容器,如下所示:
- 名稱:otel-collector
- 映像來源:Azure Container Registry
- 登錄:
azd provision
所建立的登錄 - 映像:otel-collector
- 標籤:最新
選取套用。
您現在應會在部署中心看到兩個容器。 主要容器會標示為 [主要],而 Sidecar 容器會標示為 [Sidecar]。 每個應用程式都必須有一個主要容器,但可有多個 Sidecar 容器。
4.設定環境變數
針對範例案例,otel-collector Sidecar 會設定為將 OpenTelemetry 資料匯出至 Azure 監視器,但是需要連接字元串作為環境變數 (請參閱 otel-collector 映像的 OpenTelemetry 組態檔)。
您可藉由設定應用程式設定,為容器 (像是任何 App Service 應用程式) 設定環境變數。 應用程式設定可供應用程式中的所有容器存取。
在應用程式的管理頁面中,從左側功能表中,選取 [環境變數]。
選取 [新增 ] 並加以設定,以新增應用程式設定,如下所示:
- 名稱:APPLICATIONINSIGHTS_CONNECTION_STRING
- 值:輸出
azd provision
中的 連接字串。 如果您遺失 Cloud Shell 工作階段,您也可以在 Application Insight 資源的 [概觀] 頁面的 [連接字串] 底下找到它。
選取 [套用],然後選取 [套用],然後選取 [確認]。
注意
某些應用程式設定不適用於已啟用 Sidecar 的應用程式。 如需詳細資訊,請參閱已啟用 Sidecar 的應用程式差異。
5.在 Application Insights 中確認
otel-collector Sidecar 現在應該將資料匯出至 Application Insights。
回到
https://<app-name>.azurewebsites.net
的瀏覽器索引標籤,重新整理頁面數次以產生一些 Web 要求。返回資源群組概觀頁面,然後選取 Application Insights 資源。 您現在應該會在預設圖表中看到一些資料。
注意
在此非常常見的監視案例中,Application Insights 就是您可使用的其中一個 OpenTelemetry 目標,例如 Jaeger、Prometheus 和 Zipkin。
清除資源
若不再需要此環境,您可以刪除資源群組、App Service 及所有相關資源。 只要在 Cloud Shell 中複製的存放庫中執行此命令:
azd down
Sidecar 容器如何處理內部通訊?
Sidecar 容器與主要容器共用相同的網路主機,因此主要容器(和其他側車容器)可以使用 聯機到 Sidecar localhost:<port>
上的任何埠。 這正是 Nginx 容器將資料傳送至 Sidecar 的方式 (請參閱範例 Nginx 映像的 OpenTelemetry 模組設定)。
在 [ 編輯容器] 對話框中, App Service 目前未使用 [埠 ] 方塊。 您可以使用它做為 Sidecar 元數據的一部分,例如指出 Sidecar 正在接聽的埠。
已啟用 Sidecar 的應用程式差異
您會以不同的方式設定已啟用 Sidecar 的應用程式與未啟用 Sidecar 的應用程式。 具體來說,您不會使用應用程式設定來設定主要容器和 Sidecar,而是直接在資源屬性中設定。 下列應用程式設定不適用於已啟用 Sidecar 的應用程式:
- 登錄驗證設定:
DOCKER_REGISTRY_SERVER_URL
、DOCKER_REGISTRY_SERVER_USERNAME
和DOCKER_REGISTRY_SERVER_PASSWORD
。 - 容器連接埠:
WEBSITES_PORT