مشاركة عبر


البرنامج التعليمي: تكوين حاوية sidecar لتطبيق Linux في Azure App Service

في هذا البرنامج التعليمي، يمكنك إضافة جامع OpenTelemetry كحاوية sidecar إلى تطبيق Linux (إحضار التعليمات البرمجية الخاصة بك) في Azure App Service. بالنسبة للحاويات المخصصة، راجع البرنامج التعليمي: تكوين حاوية sidecar للحاوية المخصصة في Azure App Service.

إذا لم يكن لديك حساب Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.

تتيح لك حاويات Sidecar في App Service نشر خدمات وميزات إضافية لتطبيقات Linux الخاصة بك دون اقترانها بإحكام بالحاوية الرئيسية المضمنة أو المخصصة. تعمل حاويات sidecar جنبا إلى جنب مع حاوية التطبيق الرئيسية في نفس خطة App Service.

يمكنك إضافة ما يصل إلى تسع حاويات جانبية لكل تطبيق Linux في App Service. على سبيل المثال، يمكنك إضافة خدمات المراقبة والتسجيل والتكوين والشبكات كحاويات sidecar. يعد جامع OpenTelemetry sidecar مثالا واحدا للمراقبة.

1. إعداد الموارد المطلوبة

أولا يمكنك إنشاء الموارد التي يستخدمها البرنامج التعليمي. يتم استخدامها لهذا السيناريو المحدد وهي غير مطلوبة لحاويات sidecar بشكل عام.

  1. في Azure Cloud Shell، قم بتشغيل الأوامر التالية. تأكد من توفير <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. عند المطالبة، قم بتوفير الاشتراك والمنطقة التي تختارها. على سبيل المثال:

    • الاشتراك: اشتراكك.
    • المنطقة: (أوروبا) غرب أوروبا.

    عند اكتمال النشر، يجب أن تشاهد الإخراج التالي:

     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. انسخ قيم الإخراج هذه لاحقا. يمكنك أيضا العثور عليها في المدخل، في صفحات إدارة الموارد المعنية.

    Note

    azd provision يستخدم القوالب المضمنة لإنشاء موارد Azure التالية:

    • مجموعة موارد تستند إلى اسم البيئة.
    • سجل حاوية مع صورتين تم نشرهما:
      • صورة Nginx مع الوحدة النمطية OpenTelemetry.
      • صورة مجمع OpenTelemetry، تم تكوينها للتصدير إلى Azure Monitor.
    • هوية مدارة يعينها المستخدم مع AcrPull إذن على مجموعة الموارد (لسحب الصور من السجل).
    • مساحة عمل تحليلات السجل.
    • مكون Application Insights .

2. إنشاء تطبيق ويب

في هذه الخطوة، يمكنك نشر قالب ASP.NET تطبيق Core. مرة أخرى في Azure Cloud Shell، قم بتشغيل الأوامر التالية. استبدل <app-name> باسم تطبيق فريد.

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

بعد بضع دقائق، يتم نشر تطبيق ويب .NET هذا ك MyFirstAzureWebApp.dll إلى تطبيق App Service جديد.

3. إضافة حاوية جانبية

في هذا القسم، يمكنك إضافة حاوية sidecar إلى تطبيق Linux الخاص بك.

  1. في مدخل Microsoft Azure، انتقل إلى صفحة إدارة التطبيق

  2. في صفحة إدارة التطبيق، من القائمة اليمنى، حدد مركز النشر.

  3. حدد الشعار هل أنت مهتم بإضافة حاويات للتشغيل جنبا إلى جنب مع تطبيقك؟ انقر هنا لمحاولة القيام بذلك.

  4. عند إعادة تحميل الصفحة، حدد علامة التبويب الحاويات (الجديدة).

  5. حدد إضافة الحاوية الجديدة وتكوينها على النحو التالي:

    • الاسم: otel-collector
    • مصدر الصورة: Azure Container Registry
    • المصادقة: بيانات اعتماد المسؤول
    • السجل: السجل الذي تم إنشاؤه بواسطة azd provision
    • الصورة: otel-collector
    • الوسم: الأحدث
  6. حدد تطبيق.

    لقطة شاشة توضح كيفية تكوين حاوية sidecar في مركز توزيع تطبيق الويب.

4. تكوين متغيرات البيئة

بالنسبة للسيناريو النموذجي، يتم تكوين otel-collector sidecar لتصدير بيانات OpenTelemetry إلى Azure Monitor، ولكنه يحتاج إلى سلسلة الاتصال كمتغير بيئة (راجع ملف تكوين OpenTelemetry لصورة otel-collector).

يمكنك تكوين متغيرات البيئة للحاويات مثل أي تطبيق App Service، عن طريق تكوين إعدادات التطبيق. يمكن الوصول إلى إعدادات التطبيق لجميع الحاويات في التطبيق.

  1. انتقل إلى صفحة إدارة تطبيق App Service.

  2. من القائمة اليسرى، حدد متغيرات البيئة.

  3. أضف إعداد تطبيق عن طريق تحديد إضافة وتكوينه على النحو التالي:

    • الاسم: APPLICATIONINSIGHTS_CONNECTION_STRING
    • القيمة: سلسلة الاتصال في إخراج azd provision. إذا فقدت جلسة Cloud Shell، فيمكنك أيضا العثور عليها في صفحة نظرة عامة لمورد Application Insight، ضمن سلسلة الاتصال.
  4. حدد تطبيق، ثم تطبيق، ثم تأكيد.

    لقطة شاشة تعرض صفحة تكوين تطبيق الويب مع إضافة إعدادين للتطبيق.

5. تكوين الأجهزة عند بدء التشغيل

في هذه الخطوة، يمكنك إنشاء تقرير عن حالة النظام لتطبيقك وفقا للخطوات الموضحة في تقرير عن حالة النظام ذات التعليمات البرمجية الصفرية OpenTelemetry .NET.

  1. مرة أخرى في Cloud Shell ، قم بإنشاء startup.sh باستخدام الأسطر التالية.

    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. انشر هذا الملف إلى تطبيقك باستخدام أمر Azure CLI التالي. إذا كنت لا تزال في دليل ~/MyFirstAzureWebApp ، فلا توجد معلمات أخرى ضرورية لأن az webapp up بالفعل قم بتعيين الإعدادات الافتراضية لمجموعة الموارد واسم التطبيق.

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

    Tip

    ينشر هذا الأسلوب ملف startup.sh بشكل منفصل عن التطبيق الخاص بك. بهذه الطريقة، يكون تكوين الأجهزة منفصلا عن التعليمات البرمجية للتطبيق الخاص بك. ومع ذلك، يمكنك استخدام أساليب نشر أخرى لنشر البرنامج النصي مع التطبيق الخاص بك.

  3. مرة أخرى في صفحة إدارة التطبيق، من القائمة اليمنى، حدد الضبط.

  4. اضبط أمر بدء التشغيل على /home/site/startup.sh. إنه نفس المسار الذي قمت بالنشر فيه في الخطوة السابقة.

  5. حدد حفظ، ثم متابعة.

    لقطة شاشة توضح كيفية تكوين ملف بدء تشغيل مخصص لتطبيق App Service في مدخل Microsoft Azure.

5. التحقق في Application Insights

يجب أن يقوم otel-collector sidecar بتصدير البيانات إلى Application Insights الآن.

  1. مرة أخرى في علامة تبويب المستعرض ل https://<app-name>.azurewebsites.net، قم بتحديث الصفحة عدة مرات لإنشاء بعض طلبات الويب.

  2. ارجع إلى صفحة نظرة عامة على مجموعة الموارد، ثم حدد مورد Application Insights الذي azd up تم إنشاؤه. يجب أن تشاهد الآن بعض البيانات في المخططات الافتراضية.

    لقطة شاشة لصفحة Application Insights تعرض البيانات في المخططات الافتراضية.

Note

في سيناريو المراقبة الشائع جدا هذا، Application Insights هو واحد فقط من أهداف OpenTelemetry التي يمكنك استخدامها، مثل Jaeger وPrometheus و Zipkin.

6. حذف الموارد

عندما لم تعد بحاجة إلى البيئة، يمكنك حذف مجموعات الموارد وجميع الموارد ذات الصلة. ما عليك سوى تشغيل هذه الأوامر في Cloud Shell:

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

موارد إضافية