مشاركة عبر


تمكين مراقبة التطبيقات في Azure App Service لتطبيقات .NET Node.js وPython وJava

يعد الاختراق التلقائي، الذي يشار إليه أيضا باسم مراقبة وقت التشغيل، أسهل طريقة لتمكين Application Insights ل Azure App Service دون الحاجة إلى أي تغييرات في التعليمات البرمجية أو تكوينات متقدمة. استنادا إلى السيناريو المحدد، قم بتقييم ما إذا كنت تحتاج إلى مراقبة أكثر تقدما من خلال الأجهزة اليدوية.

إشعار

في 31 مارس 2025، سينتهي دعم إدخال مفاتيح الأجهزة. سيستمر استيعاب مفتاح الأجهزة في العمل ولكننا لن نقوم بتوفير تحديثات أو أي دعم للميزة. الانتقال إلى سلاسل الاتصال للاستفادة من الإمكانات الجديدة.

تمكين "Application Insights"

هام

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

إشعار

البنية التلقائية في مدخل Microsoft Azure

  1. حدد Application Insights في قائمة التنقل اليسرى لخدمة التطبيق، ثم حدد تمكين.

     لقطة شاشة تعرض علامة التبويب Application Insights مع تحديد تمكين.

  2. إنشاء مورد جديد أو تحديد مورد Application Insights موجود لهذا التطبيق.

    إشعار

    عند تحديد موافق لإنشاء مورد جديد، تتم مطالبتك بتطبيق إعدادات المراقبة. يؤدي تحديد متابعة إلى ربط مورد Application Insights الجديد بخدمة التطبيق. ثم تتم إعادة تشغيل خدمة التطبيق.

    لقطة شاشة تعرض القائمة المنسدلة تغيير المورد.

  3. بعد تحديد المورد الذي يجب استخدامه، يمكنك اختيار الطريقة التي تريد أن يجمع بها Application Insights البيانات لكل نظام أساسي لتطبيقك. ASP.NET خيارات المجموعة الأساسية مستحسنة أو معطلة.

     لقطة شاشة تعرض قسم أدوات التطبيق الخاص بك.

ترقية ملحق/عامل المراقبة يدويا

الترقية من الإصدارات 2.8.9 وما فوق

تتم الترقية من الإصدار 2.8.9 تلقائياً، دون أي إجراءات إضافية. يتم تسليم وحدات بت المراقبة الجديدة في الخلفية إلى خدمة التطبيق الهدف، ويتم التقاطها عند إعادة تشغيل التطبيق.

للتحقق من إصدار الملحق الذي تقوم بتشغيله، انتقل إلى https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

لقطة شاشة تعرض مسار URL للتحقق من إصدار الملحق الذي تقوم بتشغيله.

الترقية من الإصدارات 1.0.0 - 2.6.5

بدءا من الإصدار 2.8.9، يتم استخدام ملحق الموقع المثبت مسبقا. إذا كنت تستخدم إصداراً أقدم، فيمكنك التحديث بإحدى طريقتين:

  • الترقية عن طريق التمكين عبر مدخل Microsoft Azure: حتى إذا كان لديك ملحق Application Insights ل App Service مثبتا، فإن واجهة المستخدم تعرض الزر تمكين فقط. خلف الكواليس، تتم إزالة ملحق الموقع الخاص القديم.

  • الترقية من خلال PowerShell:

    1. قم بتعيين إعدادات التطبيق لتمكين ملحق ApplicationInsightsAgentالموقع المثبت مسبقا . لمزيد من المعلومات، راجع تمكين من خلال PowerShell.
    2. قم بإزالة ملحق الموقع الخاص المسمى ملحق Application Insights ل Azure App Service يدويا.

إذا تم إجراء الترقية من إصدار قبل 2.5.1، فتحقق من ApplicationInsights إزالة DLLs من مجلد سلة التطبيقات. لمزيد من المعلومات، راجع استكشاف الأخطاء وإصلاحها.

تكوين ملحق/عامل المراقبة

لا نقدم حاليا خيارات لتكوين ملحق المراقبة ل ASP.NET Core.

تمكين المراقبة من جانب العميل

يتم تمكين المراقبة من جانب العميل بشكل افتراضي لتطبيقات ASP.NET Core مع المجموعة الموصى بها ، بغض النظر عما إذا كان إعداد APPINSIGHTS_JAVASCRIPT_ENABLED التطبيق موجودا أم لا.

إذا كنت ترغب في تعطيل المراقبة من جانب العميل:

  1. حدد Settings>Configuration.

  2. ضمن إعدادات التطبيق، قم بإنشاء إعداد تطبيق جديد بالمعلومات التالية:

    • الاسم: APPINSIGHTS_JAVASCRIPT_ENABLED
    • القيمة: false
  3. احفظ الإعدادات. أعد تشغيل التطبيق.

أتمتة المراقبة

لتمكين جمع القياس عن بعد باستخدام Application Insights، تحتاج فقط تعيين إعدادات التطبيق التالية:

لقطة شاشة تعرض إعدادات تطبيق App Service مع إعدادات Application Insights.

تعريفات إعدادات التطبيق

اسم إعداد التطبيق التعريف القيمة‬
ApplicationInsightsAgent_EXTENSION_VERSION التمديد الرئيسي، الذي يتحكم في مراقبة وقت التشغيل. ~2 لنظام تشغيل Windows أو ~3 لنظام تشغيل Linux
XDT_MicrosoftApplicationInsights_Mode في الوضع الافتراضي، يتم تمكين الميزات الأساسية فقط لضمان الأداء الأمثل. disabled أو recommended.
XDT_MicrosoftApplicationInsights_PreemptSdk لتطبيقات ASP.NET Core فقط. تمكين Interop (التشغيل المتداخل) مع Application Insights SDK. تحميل الملحق جنبا إلى جنب مع SDK واستخدامه لإرسال بيانات تتبع الاستخدام. (يعطل Application Insights SDK.) 1

إعدادات تطبيق App Service باستخدام Azure Resource Manager

يمكن إدارة إعدادات التطبيق ل Azure App Service وتكوينها باستخدام قوالب Azure Resource Manager. يمكنك استخدام هذا الأسلوب عند نشر موارد App Service جديدة مع أتمتة Resource Manager أو تعديل إعدادات الموارد الموجودة.

البنية الأساسية لإعدادات التطبيق JSON لمورد App Service:

      "resources": [
        {
          "name": "appsettings",
          "type": "config",
          "apiVersion": "2015-08-01",
          "dependsOn": [
            "[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
          ],
          "tags": {
            "displayName": "Application Insights Settings"
          },
          "properties": {
            "key1": "value1",
            "key2": "value2"
          }
        }
      ]

لإنشاء قالب Resource Manager مع إعدادات Application Insights الافتراضية، ابدأ العملية كما لو كنت ستنشئ تطبيق ويب جديدا مع تمكين Application Insights.

  1. إنشاء مورد خدمات التطبيق الجديد بمعلومات تطبيق الويب المطلوبة. تمكين Application Insights في علامة التبويب Monitoring .

  2. حدد "Review + create". ثم حدد تنزيل قالب للأتمتة.

    لقطة شاشة تعرض قائمة إنشاء تطبيق ويب App Service.

    ينشئ هذا الخيار أحدث قالب Resource Manager مع تكوين جميع الإعدادات المطلوبة.

    لقطة شاشة تعرض قالب تطبيق ويب App Service.

في النموذج التالي، استبدل كافة مثيلات AppMonitoredSite باسم موقعك:

إشعار

إذا كنت تستخدم Windows، فقم بتعيين ApplicationInsightsAgent_EXTENSION_VERSION إلى ~2. إذا كنت تستخدم Linux، فقم بتعيين ApplicationInsightsAgent_EXTENSION_VERSION إلى ~3.

{
    "resources": [
        {
            "name": "[parameters('name')]",
            "type": "Microsoft.Web/sites",
            "properties": {
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
                            "value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').InstrumentationKey]"
                        },
                        {
                            "name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
                            "value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').ConnectionString]"
                        },
                        {
                            "name": "ApplicationInsightsAgent_EXTENSION_VERSION",
                            "value": "~2"
                        }
                    ]
                },
                "name": "[parameters('name')]",
                "serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "hostingEnvironment": "[parameters('hostingEnvironment')]"
            },
            "dependsOn": [
                "[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
                "microsoft.insights/components/AppMonitoredSite"
            ],
            "apiVersion": "2016-03-01",
            "location": "[parameters('location')]"
        },
        {
            "apiVersion": "2016-09-01",
            "name": "[parameters('hostingPlanName')]",
            "type": "Microsoft.Web/serverfarms",
            "location": "[parameters('location')]",
            "properties": {
                "name": "[parameters('hostingPlanName')]",
                "workerSizeId": "[parameters('workerSize')]",
                "numberOfWorkers": "1",
                "hostingEnvironment": "[parameters('hostingEnvironment')]"
            },
            "sku": {
                "Tier": "[parameters('sku')]",
                "Name": "[parameters('skuCode')]"
            }
        },
        {
            "apiVersion": "2015-05-01",
            "name": "AppMonitoredSite",
            "type": "microsoft.insights/components",
            "location": "West US 2",
            "properties": {
                "ApplicationId": "[parameters('name')]",
                "Request_Source": "IbizaWebAppExtensionCreate"
            }
        }
    ],
    "parameters": {
        "name": {
            "type": "string"
        },
        "hostingPlanName": {
            "type": "string"
        },
        "hostingEnvironment": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "sku": {
            "type": "string"
        },
        "skuCode": {
            "type": "string"
        },
        "workerSize": {
            "type": "string"
        },
        "serverFarmResourceGroup": {
            "type": "string"
        },
        "subscriptionId": {
            "type": "string"
        }
    },
    "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0"
}

تمكين من خلال PowerShell

لتمكين مراقبة التطبيق من خلال PowerShell، يجب تغيير إعدادات التطبيق الأساسية فقط. تمكن العينة التالية مراقبة التطبيق لموقع ويب يسمى AppMonitoredSite في مجموعة AppMonitoredRGالموارد . يقوم بتكوين البيانات لإرسالها إلى 012345678-abcd-ef01-2345-6789abcd مفتاح تقرير عن حالة النظام.

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

إشعار

إذا كنت تستخدم Windows، فقم بتعيين ApplicationInsightsAgent_EXTENSION_VERSION إلى ~2. إذا كنت تستخدم Linux، فقم بتعيين ApplicationInsightsAgent_EXTENSION_VERSION إلى ~3.

$app = Get-AzWebApp -ResourceGroupName "AppMonitoredRG" -Name "AppMonitoredSite" -ErrorAction Stop
$newAppSettings = @{} # case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # preserve non Application Insights application settings.
$newAppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] = "012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights instrumentation key
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~2"; # enable the ApplicationInsightsAgent
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop

الأسئلة الشائعة

يقدم هذا القسم إجابات للأسئلة الشائعة.

ما الذي يعدله Application Insights في مشروعي؟

تعتمد التفاصيل على نوع المشروع. القائمة التالية هي مثال لتطبيق ويب.

  • إضافة ملفات إلى مشروعك:

    • ApplicationInsights.config
    • ai.js
  • تثبيت حزم NuGet:

    • Application Insights API: واجهة برمجة التطبيقات الأساسية
    • واجهة برمجة تطبيقات Application Insights لتطبيقات الويب: تستخدم لإرسال بيانات تتبع الاستخدام من الخادم
    • واجهة برمجة تطبيقات Application Insights لتطبيقات JavaScript: تستخدم لإرسال بيانات تتبع الاستخدام من العميل
  • يتضمن التجميعات في الحزم:

    • Microsoft.ApplicationInsights
    • Microsoft.ApplicationInsights.Platform
  • إدراج عناصر في:

    • Web.config
    • packages.config
  • يُدرج المقتطفات في التعليمات البرمجية الخاصة بالعميل والخادم لتهيئتها باستخدام معرف مورد Application Insights. على سبيل المثال، في تطبيق MVC، يتم إدراج التعليمات البرمجية في الصفحة الرئيسية Views/Shared/_Layout.cshtml. بالنسبة للمشاريع الجديدة فقط، يمكنك إضافة Application Insights إلى مشروع موجود يدويا.

ما الفرق بين المقاييس القياسية من Application Insights مقابل مقاييس Azure App Service؟

تجمع Application Insights بيانات تتبع الاستخدام للطلبات التي قدمتها إلى التطبيق. إذا حدث الفشل في WebApps/WebServer، ولم يصل الطلب إلى تطبيق المستخدم، فلن يكون لدى Application Insights أي بيانات تتبع الاستخدام عنه.

لا تتطابق مدة serverresponsetime الحساب بواسطة Application Insights بالضرورة مع وقت استجابة الخادم الذي لاحظته تطبيقات الويب. هذا السلوك لأن Application Insights تحسب المدة فقط عندما يصل الطلب فعليا إلى تطبيق المستخدم. إذا كان الطلب عالقا أو في قائمة الانتظار في WebServer، يتم تضمين وقت الانتظار في مقاييس Web Apps ولكن ليس في مقاييس Application Insights.

استكشاف الأخطاء وإصلاحها

اختبار الاتصال بين مضيف التطبيق وخدمة الاستيعاب

ترسل Application Insights SDKs والوكلاء بيانات تتبع الاستخدام للحصول على استيعابها كمكالمات REST إلى نقاط نهاية الاستيعاب الخاصة بنا. يمكنك اختبار الاتصال من خادم الويب أو الجهاز المضيف للتطبيق إلى نقاط نهاية خدمة الاستيعاب باستخدام عملاء REST الخام من أوامر PowerShell أو curl. راجع استكشاف أخطاء بيانات تتبع استخدام التطبيق المفقودة وإصلاحها في Azure Monitor Application Insights.

إشعار

عند إنشاء تطبيق ويب مع ASP.NET Core أوقات التشغيل في App Service، فإنه ينشر صفحة HTML ثابتة واحدة كمنشئ موقع ويب. لا نوصي باستكشاف مشكلة في القالب الافتراضي وإصلاحها. نشر تطبيق قبل استكشاف مشكلة وإصلاحها.

بيانات تتبع الاستخدام المفقودة

Windows

  1. ApplicationInsightsAgent_EXTENSION_VERSION تحقق من تعيين إعداد التطبيق إلى قيمة ~2.

  2. استعرض إلى https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    لقطة شاشة تعرض الارتباط أعلى صفحة النتائج.

    • تأكد من أن حالة ملحق Application Insights هي Pre-Installed Site Extension, version 2.8.x.xxxx, is running.

      إذا لم يكن قيد التشغيل، فاتبع الإرشادات الواردة في القسم تمكين مراقبة Application Insights.

    • تأكد من وجود مصدر الحالة ويبدو مثل Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json.

      إذا لم تكن هناك قيمة مشابهة، فهذا يعني أن التطبيق ليس قيد التشغيل حالياً أو غير معتمد. للتأكد من تشغيل التطبيق، حاول زيارة نقاط نهاية عنوان URL/التطبيق يدويا، مما يسمح بتوفير معلومات وقت التشغيل.

    • تأكد من أن IKeyExists هو True. إذا كانت False، فأضف APPINSIGHTS_INSTRUMENTATIONKEY وAPPLICATIONINSIGHTS_CONNECTION_STRING مع ikey GUID إلى إعدادات التطبيق.

    • إذا كان التطبيق الخاص بك يشير إلى أي حزم Application Insights، فقد لا يسري تمكين تكامل App Service، وقد لا تظهر البيانات في Application Insights. مثال على ذلك هو إذا كنت قد قمت مسبقا باستخدام تطبيقك باستخدام ASP.NET Core SDK أو حاولت استخدامها. لإصلاح المشكلة، في مدخل Microsoft Azure، قم بتشغيل Interop مع Application Insights SDK.

      هام

      هذه الوظيفة قيد المعاينة.

       لقطة شاشة تعرض تمكين إعداد interop.

      يتم إرسال البيانات باستخدام نهج بدون تعليمات برمجية، حتى إذا تم استخدام Application Insights SDK في الأصل أو حاول استخدامه.

      هام

      إذا استخدم التطبيق Application Insights SDK لإرسال أي بيانات تتبع الاستخدام، تعطيل بيانات تتبع الاستخدام. بمعنى آخر، سيتم تعطيل بيانات تتبع الاستخدام المخصصة (على سبيل المثال، أي Track*() أساليب) والإعدادات المخصصة (مثل أخذ العينات).

Linux

  1. ApplicationInsightsAgent_EXTENSION_VERSION تحقق من تعيين إعداد التطبيق إلى قيمة ~3.

  2. استعرض إلى https://your site name.scm.azurewebsites.net/ApplicationInsights.

  3. داخل هذا الموقع، قم بتأكيد:

    • مصدر الحالة موجود ويبدو مثل Status source /var/log/applicationinsights/status_abcde1234567_89_0.json.
    • يتم عرض القيمة Auto-Instrumentation enabled successfully . في حالة عدم وجود قيمة مماثلة، فهذا يعني أن التطبيق لا يعمل أو غير مدعوم. للتأكد من تشغيل التطبيق، حاول زيارة نقاط نهاية عنوان URL/التطبيق يدويا، مما يسمح بتوفير معلومات وقت التشغيل.
    • IKeyExists هو True. إذا كانت False، فأضف APPINSIGHTS_INSTRUMENTATIONKEY وAPPLICATIONINSIGHTS_CONNECTION_STRING مع ikey GUID إلى إعدادات التطبيق.

    لقطة شاشة تعرض صفحة ويب حالة البنى التلقائية.

لا يدعم موقع الويب الافتراضي المنشور مع تطبيقات الويب المراقبة التلقائية من جانب العميل

عند إنشاء تطبيق ويب باستخدام أوقات تشغيل ASP.NET Core في App Service، فإنه ينشر صفحة HTML ثابتة واحدة كمبدأ موقع ويب. تقوم صفحة الويب الثابتة أيضا بتحميل ASP. جزء ويب مدار بواسطة NET في IIS. يسمح هذا السلوك باختبار المراقبة من جانب الخادم بدون تعليمات برمجية ولكنه لا يدعم المراقبة التلقائية من جانب العميل.

إذا كنت ترغب في اختبار الخادم بدون تعليمات برمجية والمراقبة من جانب العميل ASP.NET Core في تطبيق ويب App Service، نوصي باتباع الدلائل الرسمية لإنشاء تطبيق ويب ASP.NET Core. بعد ذلك، استخدم الإرشادات الواردة في المقالة الحالية لتمكين المراقبة.

PHP وWordPress غير مدعومين

PHP ومواقع WordPress غير مدعومتين. لا يوجد حالياً أي SDK / وكيل معتمد رسميًا لمراقبة جانب الخادم لأحمال العمل هذه. لتعقب المعاملات من جانب العميل على موقع PHP أو WordPress، أضف JavaScript من جانب العميل إلى صفحات الويب الخاصة بك باستخدام JavaScript SDK.

يوفر الجدول التالي شرحا لما تعنيه هذه القيم وأسبابها الأساسية والإصلاحات الموصى بها.

قيمة المشكلة الشرح Fix
AppAlreadyInstrumented:true تشير هذه القيمة إلى أن الملحق اكتشف بعض جوانب SDK الموجودة بالفعل في التطبيق ويتراجع. مرجع إلى Microsoft.ApplicationInsights.AspNetCore أو Microsoft.ApplicationInsights يمكن أن يسبب هذه القيمة. إزالة المراجع. تتم إضافة بعض هذه المراجع بشكل افتراضي من قوالب Visual Studio معينة. الإصدارات القديمة من مرجع Microsoft.ApplicationInsightsVisual Studio .
AppAlreadyInstrumented:true يمكن أن يتسبب وجود Microsoft.ApplicationsInsights DLL في مجلد التطبيق من عملية نشر سابقة أيضا في هذه القيمة. قم بتنظيف مجلد التطبيق للتأكد من إزالة DLLs هذه. تحقق من كل من دليل سلة التطبيق المحلي ودليل wwwroot على App Service. (للتحقق من دليل wwwroot لتطبيق ويب App Service، حدد Advanced Tools (Kudu) >Debug console>CMD>home\site\wwwroot).
IKeyExists:false تشير هذه القيمة إلى أن مفتاح الأجهزة غير موجود في إعداد APPINSIGHTS_INSTRUMENTATIONKEYالتطبيق . تتضمن الأسباب المحتملة إزالة القيم عن طريق الخطأ أو النسيان لتعيين القيم في البرنامج النصي التلقائي. تأكد من وجود الإعداد في إعدادات تطبيق خدمة التطبيقات.