Aracılığıyla paylaş


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

Bu öğreticide, Azure Uygulaması Service'teki bir Linux (kendi kodunu getir) uygulamasına sepet kapsayıcısı olarak openTelemetry toplayıcısı eklersiniz. Özel kapsayıcılar için bkz. Öğretici: Azure Uygulaması Hizmeti'nde özel kapsayıcı için sepet kapsayıcısı yapılandırma.

Azure Uygulaması Hizmeti'nde her Linux uygulaması için en fazla dokuz sepet kapsayıcısı ekleyebilirsiniz. Sepet kapsayıcıları, Linux uygulamalarınızı ana (yerleşik) kapsayıcıyla sıkı bir şekilde bağlamadan ek hizmetler ve özellikler dağıtmanıza olanak sağlar. Örneğin izleme, günlüğe kaydetme, yapılandırma ve ağ hizmetlerini sepet kapsayıcıları olarak ekleyebilirsiniz. OpenTelemetry toplayıcısı sepet, bu tür bir izleme örneğidir.

App Service'teki yan kapsayıcı hakkında daha fazla bilgi için bkz:

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

1. Gerekli kaynakları ayarlama

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

  1. Azure Cloud Shell'de aşağıdaki komutları çalıştırın. öğesini sağladığından <environment-name>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 sağlayın. Ö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, Core uygulaması ASP.NET bir şablon dağıtacaksınız. Azure Cloud Shell'e geri döndüğünüzde aşağıdaki komutları çalıştırın. değerini benzersiz bir uygulama adıyla değiştirin <app-name> .

cd ~
dotnet new webapp -n MyFirstAzureWebApp --framework net8.0
cd MyFirstAzureWebApp
az webapp up --name <app-name> --os-type linux

Birkaç dakika sonra bu .NET web uygulaması yeni bir App Service uygulamasına MyFirstAzureWebApp.dll olarak dağıtılır.

3. Sepet kapsayıcısı ekleme

Bu bölümde Linux uygulamanıza bir sepet 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? başlığını seçin. Denemek için buraya tıklayın.

  4. Sayfa yeniden yüklenirken 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: Tarafından oluşturulan kayıt defteri azd provision
    • Görüntü: otel-collector
    • Etiket: en son
  6. Uygula’yı seçin.

    Web uygulamasının dağıtım merkezinde sepet 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 sepet OpenTelemetry verilerini Azure İzleyici'ye dışarı aktaracak şekilde yapılandırılmıştır, ancak ortam değişkeni olarak bağlantı dizesi gerekir (otel toplayıcı görüntüsü için OpenTelemetry yapılandırma dosyasına bakın).

Uygulama ayarlarını yapılandırarak herhangi bir App Service uygulaması gibi kapsayıcılar için ortam değişkenlerini 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: çıkışındaki azd provisionbağlantı dizesi. Cloud Shell oturumunu kaybettiyseniz, bunu Application Insight kaynağının Genel Bakış sayfasında, Bağlantı Dizesi'nin altında da bulabilirsiniz.
  4. Uygula'yı, uygula'yı ve ardından 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 izlemesinde açıklanan adımlara göre uygulamanız için izleme oluşturursunuz.

  1. Cloud Shell'de 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. Hala ~/MyFirstAzureWebApp dizinindeyseniz, kaynak grubu ve uygulama adı için varsayılanları zaten ayarladığınızdan başka parametre gerekmezaz webapp up.

    az webapp deploy --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. Başlangıç Komutunu /home/site/startup.sh olarak ayarlayın. Bu, önceki adımda dağıttığınız yoldur.

  5. Kaydet'i ve 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ğrulama

Otel toplayıcısı sepet, verileri application insights'a aktarmalıdır.

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

  2. Kaynak grubuna genel bakış sayfasına dönün ve oluşturulan Application Insights kaynağını azd up 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 --yes
cd ~/app-service-sidecar-tutorial-prereqs
azd down

Sık sorulan sorular

Sepet kapsayıcıları iç iletişimi nasıl işler?

Sepet kapsayıcıları ana kapsayıcıyla aynı ağ konağını paylaşır, bu nedenle ana kapsayıcı (ve diğer sepet kapsayıcıları) ile localhost:<port>sepet üzerindeki herhangi bir bağlantı noktasına ulaşabilir. Örnek startup.sh, otel toplayıcısı sepet üzerindeki 4318 numaralı bağlantı noktasına erişmek için kullanılırlocalhost:4318.

Kapsayıcıyı düzenle iletişim kutusunda, Bağlantı Noktası kutusu şu anda App Service tarafından kullanılmaz. Sepet meta verilerinin bir parçası olarak kullanabilirsiniz. Örneğin, sepette hangi bağlantı noktasını dinlediğini belirtebilirsiniz.

Diğer dil yığınlarını Nasıl yaparım? izleme?

Diğer dil yığınlarındaki uygulamaları izlemek için benzer bir yaklaşım kullanabilirsiniz. Daha fazla bilgi için OpenTelemetry belgelerine bakın:

Diğer kaynaklar