Bagikan melalui


Tutorial: Mengonfigurasi kontainer sidecar untuk aplikasi Linux di Azure App Service

Dalam tutorial ini, Anda menambahkan pengumpul OpenTelemetry sebagai kontainer sidecar ke aplikasi Linux (bring-your-own-code) di Azure App Service. Untuk kontainer kustom, lihat Tutorial: Mengonfigurasi kontainer sidecar untuk kontainer kustom di Azure App Service.

Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.

Kontainer sidecar di App Service memungkinkan Anda menyebarkan layanan dan fitur tambahan ke aplikasi Linux Anda tanpa mengkoplorasinya dengan erat ke kontainer utama bawaan atau kustom. Kontainer sidecar berjalan bersama kontainer aplikasi utama dalam paket App Service yang sama.

Anda dapat menambahkan hingga sembilan kontainer sidecar untuk setiap aplikasi Linux di App Service. Misalnya, Anda dapat menambahkan layanan pemantauan, pengelogan, konfigurasi, dan jaringan sebagai kontainer sespan. Sidecar pengumpul OpenTelemetry adalah salah satu contoh untuk pemantauan.

1. Siapkan sumber daya yang diperlukan

Pertama, Anda membuat sumber daya yang digunakan tutorial. Mereka digunakan untuk skenario khusus ini dan tidak diperlukan untuk kontainer sespan secara umum.

  1. Di Azure Cloud Shell, jalankan perintah berikut. Pastikan untuk menyediakan <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
    
  2. Saat diminta, berikan langganan dan wilayah pilihan Anda. Contohnya:

    • Langganan: Langganan Anda.
    • Wilayah: (Eropa) Eropa Barat.

    Saat penyebaran selesai, Anda akan melihat output berikut:

     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. Salin nilai output ini untuk nanti. Anda juga dapat menemukannya di portal, di halaman manajemen sumber daya masing-masing.

    Catatan

    azd provision menggunakan templat yang disertakan untuk membuat sumber daya Azure berikut:

    • Grup sumber daya berdasarkan nama lingkungan.
    • Registri kontainer dengan dua gambar yang disebarkan:
      • Gambar Nginx dengan modul OpenTelemetry.
      • Gambar pengumpul OpenTelemetry, dikonfigurasi untuk diekspor ke Azure Monitor.
    • Identitas terkelola yang ditetapkan pengguna dengan AcrPull izin pada grup sumber daya (untuk menarik gambar dari registri).
    • Ruang kerja analitik log.
    • Komponen Application Insights .

2. Membuat aplikasi web

Dalam langkah ini, Anda menyebarkan templat ASP.NET aplikasi Core. Kembali ke Azure Cloud Shell, jalankan perintah berikut. Ganti <app-name> dengan nama aplikasi yang unik.

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

Setelah beberapa menit, aplikasi web .NET ini disebarkan sebagai MyFirstAzureWebApp.dll ke aplikasi App Service baru.

3. Tambahkan kontainer sespan

Di bagian ini, Anda menambahkan kontainer sidecar ke aplikasi Linux Anda.

  1. Di portal Azure, navigasikan ke halaman manajemen aplikasi

  2. Di halaman manajemen aplikasi, dari menu sebelah kiri, pilih Pusat Penyebaran.

  3. Pilih banner Tertarik untuk menambahkan kontainer untuk dijalankan bersama aplikasi Anda? Klik di sini untuk mencobanya.

  4. Saat halaman dimuat ulang, pilih tab Kontainer (baru).

  5. Pilih Tambahkan dan konfigurasikan kontainer baru sebagai berikut:

    • Nama: otel-collector
    • Sumber gambar: Azure Container Registry
    • Autentikasi: Kredensial Admin
    • Registri: Registri yang dibuat oleh azd provision
    • Gambar: otel-collector
    • Tag: terbaru
  6. Pilih Terapkan.

    Cuplikan layar memperlihatkan cara mengonfigurasi kontainer sidecar di pusat penyebaran aplikasi web.

4. Mengonfigurasi variabel lingkungan

Untuk skenario sampel, sidecar pengumpul otel dikonfigurasi untuk mengekspor data OpenTelemetry ke Azure Monitor, tetapi memerlukan string koneksi sebagai variabel lingkungan (lihat file konfigurasi OpenTelemetry untuk gambar otel-collector).

Anda mengonfigurasi variabel lingkungan untuk kontainer seperti aplikasi App Service apa pun, dengan mengonfigurasi pengaturan aplikasi. Pengaturan aplikasi dapat diakses oleh semua kontainer di aplikasi.

  1. Navigasikan ke halaman manajemen aplikasi App Service.

  2. Dari menu sebelah kiri, pilih Variabel lingkungan.

  3. Tambahkan pengaturan aplikasi dengan memilih Tambahkan dan konfigurasikan sebagai berikut:

    • Nama: APPLICATIONINSIGHTS_CONNECTION_STRING
    • Nilai: String koneksi dalam output azd provision. Jika Anda kehilangan sesi Cloud Shell, Anda juga dapat menemukannya di halaman Gambaran Umum sumber daya Application Insight, di bawah String Koneksi.
  4. Pilih Terapkan, lalu Terapkan, lalu Konfirmasi.

    Cuplikan layar memperlihatkan halaman Konfigurasi aplikasi web dengan dua pengaturan aplikasi ditambahkan.

5. Mengonfigurasi instrumentasi saat startup

Dalam langkah ini, Anda membuat instrumentasi untuk aplikasi Anda sesuai dengan langkah-langkah yang diuraikan dalam instrumentasi openTelemetry .NET zero-code.

  1. Kembali ke Cloud Shell, buat startup.sh dengan baris berikut.

    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. Sebarkan file ini ke aplikasi Anda dengan perintah Azure CLI berikut. Jika Anda masih berada di direktori ~/MyFirstAzureWebApp , maka tidak ada parameter lain yang diperlukan karena az webapp up sudah mengatur default untuk grup sumber daya dan nama aplikasi.

    az webapp deploy --src-path startup.sh --target-path /home/site/startup.sh --type static
    

    Petunjuk / Saran

    Pendekatan ini menyebarkan file startup.sh secara terpisah dari aplikasi Anda. Dengan begitu, konfigurasi instrumentasi terpisah dari kode aplikasi Anda. Namun, Anda dapat menggunakan metode penyebaran lain untuk menyebarkan skrip bersama-sama dengan aplikasi Anda.

  3. Kembali ke halaman manajemen aplikasi, dari menu sebelah kiri, pilih Konfigurasi.

  4. Atur Perintah Startup ke /home/site/startup.sh. Ini adalah jalur yang sama dengan yang Anda sebarkan di langkah sebelumnya.

  5. Pilih Simpan, lalu Lanjutkan.

    Cuplikan layar yang memperlihatkan cara mengonfigurasi file startup kustom untuk aplikasi App Service di portal Azure.

5. Verifikasi di Application Insights

Sidecar pengumpul otel harus mengekspor data ke Application Insights sekarang.

  1. Kembali ke tab browser untuk https://<app-name>.azurewebsites.net, refresh halaman beberapa kali untuk menghasilkan beberapa permintaan web.

  2. Kembali ke halaman gambaran umum grup sumber daya, lalu pilih sumber daya Application Insights yang azd up dibuat. Sekarang Anda akan melihat beberapa data di bagan default.

    Cuplikan layar halaman Application Insights memperlihatkan data di bagan default.

Catatan

Dalam skenario pemantauan yang sangat umum ini, Application Insights hanyalah salah satu target OpenTelemetry yang dapat Anda gunakan, seperti Jaeger, Prometheus, dan Zipkin.

6. Membersihkan sumber daya

Ketika Anda tidak lagi memerlukan lingkungan, Anda dapat menghapus grup sumber daya dan semua sumber daya terkait. Cukup jalankan perintah ini di Cloud Shell:

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

Sumber daya lainnya