Öğretici: Azure Uygulama Hizmeti'nde Linux uygulaması için sidecar kapsayıcısı yapılandırma

Bu öğreticide, Azure App Service'teki bir Linux (kendi kodunu getir) uygulamasına sidecar kapsayıcısı olarak OpenTelemetry toplayıcısı eklersiniz. Özel kapsayıcılar için bkz. Öğretici: Azure App Service'te özel kapsayıcı için sidecar container yapılandırma.

Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.

App Service'teki sepet kapsayıcıları, Linux uygulamalarınızı yerleşik veya özel ana kapsayıcıya sıkı bir şekilde bağlamadan ek hizmetler ve özellikler dağıtmanıza olanak sağlar. Yan konteynerler, aynı Uygulama Hizmet planında ana uygulama konteyneriyle birlikte çalışır.

App Service'te her Linux uygulaması için en fazla dokuz sepet kapsayıcısı ekleyebilirsiniz. Örneğin izleme, günlüğe kaydetme, yapılandırma ve ağ hizmetlerini sidecar kapsayıcıları olarak ekleyebilirsiniz. OpenTelemetry kolektör yan arabası, izleme için bir örnektir.

1. Gerekli kaynakları ayarlayın

İlk olarak öğreticinin kullandığı kaynakları oluşturursunuz. Bu senaryo için kullanılırlar ve genel olarak sidecar kapsayıcıları için gerekli değildir.

  1. Azure Cloud Shell'de aşağıdaki komutları çalıştırın. <environment-name> öğesini sağladığınızdan emin olun.

    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
    
  2. İstendiğinde, seçtiğiniz aboneliği ve bölgeyi belirtin. Örneğin:

    • Abonelik: Aboneliğiniz.
    • Bölge: (Avrupa) Batı Avrupa.

    Dağıtım tamamlandığında aşağıdaki çıkışı görmeniz gerekir:

     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>
     
  3. Bu çıkış değerlerini daha sonra için kopyalayın. Bunları portalda, ilgili kaynakların yönetim sayfalarında da bulabilirsiniz.

    Not

    azd provision aşağıdaki Azure kaynaklarını oluşturmak için dahil edilen şablonları kullanır:

2. Web uygulaması oluşturma

Bu adımda, şablon bir ASP.NET Core uygulaması dağıtırsınız. Azure Cloud Shell'te aşağıdaki komutları çalıştırın. eastus yerine genel olarak benzersiz bir uygulama adı ve <app-name> yerine tercih ettiğiniz bölgeyi yazın.

  1. Örnek uygulamayı oluşturun:

    cd ~
    dotnet new webapp -n MyFirstAzureWebApp --framework net8.0
    cd MyFirstAzureWebApp
    
  2. Kaynak grubunu, Linux App Service planını ve web uygulamasını oluşturun:

    az group create --name myWebAppResourceGroup --location eastus
    az appservice plan create --name myWebAppPlan --resource-group myWebAppResourceGroup --sku P0v3 --is-linux
    az webapp create --name <app-name> --resource-group myWebAppResourceGroup --plan myWebAppPlan --runtime "DOTNETCORE:8.0"
    
  3. Uygulamayı oluşturun ve yayın dizininin içeriğini paketleyin:

    dotnet publish --configuration Release --output publish
    cd publish
    zip -r ../app.zip .
    cd ..
    
  4. Paketi dağıtın.

    az webapp deploy --name <app-name> --resource-group myWebAppResourceGroup --src-path app.zip --type zip
    

Birkaç dakika sonra, .NET web uygulaması yeni App Service uygulamasına MyFirstAzureWebApp.dll olarak yerleştirilir.

3. sidecar kapsayıcısı ekleme

Bu bölümde Linux uygulamanıza bir sidecar kapsayıcısı eklersiniz.

  1. Azure portalında uygulamanın yönetim sayfasına gidin

  2. Uygulamanın yönetim sayfasında, soldaki menüden Dağıtım Merkezi'ni seçin.

  3. Uygulamanızın yanında çalıştırılacak kapsayıcılar eklemekle ilgileniyor musunuz? Denemek için buraya tıklayın. afişini seçin.

  4. Sayfa yeniden yüklendiğinde Kapsayıcılar (yeni) sekmesini seçin.

  5. Ekle'yi seçin ve yeni kapsayıcıyı aşağıdaki gibi yapılandırın:

    • Ad: otel-collector
    • Görüntü kaynağı: Azure Container Registry
    • Kimlik Doğrulaması: Yönetici Kimlik Bilgileri
    • Kayıt Defteri: azd provision tarafından oluşturulan kayıt defteri
    • Görüntü: otel-collector
    • Tag: en son
  6. Uygula’yı seçin.

    Web uygulamasının dağıtım merkezinde sidecar kapsayıcısını yapılandırmayı gösteren ekran görüntüsü.

4. Ortam değişkenlerini yapılandırma

Örnek senaryo için, otel-collector sidecar OpenTelemetry verilerini Azure İzleyici'a dışarı aktaracak şekilde yapılandırılmıştır, ancak ortam değişkeni olarak bağlantı dizesine ihtiyaç duyar (bkz. otel-collector image için OpenTelemetry yapılandırma dosyası).

Herhangi bir App Service uygulamasında olduğu gibi, kapsayıcılar için ortam değişkenlerini uygulama ayarlarını yapılandırarak yapılandırırsınız. Uygulama ayarlarına uygulamadaki tüm kapsayıcılar erişebilir.

  1. App Service uygulamasının yönetim sayfasına gidin.

  2. Soldaki menüden Ortam değişkenleri'ni seçin.

  3. Ekle'yi seçerek bir uygulama ayarı ekleyin ve aşağıdaki gibi yapılandırın:

    • Ad: APPLICATIONINSIGHTS_CONNECTION_STRING
    • Değer: azd provision çıktısındaki bağlantı dizesi. Cloud Shell oturumunu kaybettiyseniz, bunu Application Insights kaynağının Genel Bakış sayfasında, Bağlantı Dizesi altında da bulabilirsiniz.
  4. Uygula'yı seçin, ardından Uygula'yı, sonra Onayla'yı seçin.

    İki uygulama ayarı eklenmiş bir web uygulamasının Yapılandırma sayfasını gösteren ekran görüntüsü.

5. İzlemeyi başlangıçta yapılandırma

Bu adımda, OpenTelemetry .NET sıfır kod enstrümantasyonu'nda açıklanan adımlara göre uygulamanız için enstrümantasyon oluşturursunuz.

  1. Cloud Shell'e geri dönüp aşağıdaki satırlarla startup.sh oluşturun.

    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
    
  2. Aşağıdaki Azure CLI komutuyla bu dosyayı uygulamanıza dağıtın. <app-name> öğesini, uygulamayı oluştururken kullandığınız adla değiştirin.

    az webapp deploy --resource-group myWebAppResourceGroup --name <app-name> --src-path startup.sh --target-path /home/site/startup.sh --type static
    

    İpucu

    Bu yaklaşım, startup.sh dosyasını uygulamanızdan ayrı olarak dağıtır. Bu şekilde izleme yapılandırması uygulama kodunuzdan ayrıdır. Ancak, betiği uygulamanızla birlikte dağıtmak için diğer dağıtım yöntemlerini kullanabilirsiniz.

  3. Uygulamanın yönetim sayfasına dönüp soldaki menüden Yapılandırma'yı seçin.

  4. Startup Command'u /home/site/startup.sh olarak ayarlayın. Bu, önceki adımda dağıttığınız yolun aynısıdır.

  5. Kaydet, ardından Devam seçin.

    Azure portalında App Service uygulaması için özel başlangıç dosyasının nasıl yapılandırıldığını gösteren ekran görüntüsü.

5. Application Insights'ta doğrulayın

Otel toplayıcısı sidecar, verileri Application Insights'a aktarmalıdır.

  1. Tarayıcıda https://<app-name>.azurewebsites.net sekmesine geri dönün ve birkaç web isteği oluşturmak için sayfayı birkaç kez yenileyin.

  2. Kaynak grubunun genel bakış sayfasına dönün ve ardından azd up tarafından oluşturulan Application Insights kaynağını seçin. Şimdi varsayılan grafiklerde bazı veriler görmeniz gerekir.

    Varsayılan grafiklerdeki verileri gösteren Application Insights sayfasının ekran görüntüsü.

Not

Bu çok yaygın izleme senaryosunda Application Insights, Jaeger, Prometheus ve Zipkin gibi kullanabileceğiniz OpenTelemetry hedeflerinden yalnızca biridir.

6. Kaynakları temizleme

Ortama artık ihtiyacınız kalmadığında, kaynak gruplarını ve tüm ilgili kaynakları silebilirsiniz. Cloud Shell'de şu komutları çalıştırmanız yeter:

cd ~/MyFirstAzureWebApp
az group delete --name myWebAppResourceGroup --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down

Diğer kaynaklar