مراقبة التطبيق لخدمة التطبيقات Azure Node.js

لا تتطلب مراقبة تطبيقات الويب Node.js التي تعمل على Azure App Services أي تعديلات على التعليمات البرمجية. ترشدك هذه المقالة خلال تمكين مراقبة Azure Monitor Application Insights وتوفر إرشادات أولية لأتمتة عملية عمليات النشر واسعة النطاق.

تمكين "Application Insights"

الطريقة السهلة لتمكين مراقبة التطبيقات لتطبيقات Node.js التي تعمل على خدمات تطبيقات Azure هي من خلال مدخل Microsoft Azure. سيؤدي تشغيل مراقبة التطبيق في مدخل Microsoft Azure إلى تثبيت تطبيقك تلقائيًا باستخدام Application Insights، ولا يتطلب أي تغييرات في التعليمة البرمجية.

إشعار

يمكنك تكوين العامل المرفق تلقائيا باستخدام متغير البيئة APPLICATIONINSIGHTS_CONFIGURATION_CONTENT في شفرة متغير App Service Environment. للحصول على تفاصيل حول خيارات التكوين التي يمكن تمريرها عبر متغير البيئة هذا، راجع تكوين Node.js.

إشعار

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

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

للحصول على قائمة كاملة بسيناريوهات البنية التلقائية المدعومة، راجع البيئات واللغات وموفري الموارد المعتمدين.

يمكنك تشغيل المراقبة لتطبيقات Node.js التي تعمل في Azure App Service بنقرة واحدة فقط، ولا يتطلب الأمر تغيير التعليمات البرمجية. يتم دمج Application Insights لـNode.js مع Azure App Service على لينكس - حاويات تعتمد على التعليمات البرمجية والعرف، ومع خدمة التطبيقات على Windows للتطبيقات المستندة إلى التعليمات البرمجية. التكامل في المعاينة العامة. يضيف التكامل SDK Node.js، وهو في التوفر العام

  1. اختر Application Insights في لوحة تحكم Azure لخدمة التطبيق، ثم حدد Enable.

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

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

    إشعار

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

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

  3. بمجرد تحديد المورد الذي يجب استخدامه، يتم تعيين كل شيء على الانتقال.

    لقطة شاشة من تجهيز التطبيق الخاص بك.

التكوين

يمكن تكوين عامل Node.js باستخدام JSON. APPLICATIONINSIGHTS_CONFIGURATION_CONTENT تعيين متغير البيئة إلى سلسلة JSON أو تعيين APPLICATIONINSIGHTS_CONFIGURATION_FILE متغير البيئة إلى مسار الملف الذي يحتوي على JSON.

"samplingPercentage": 80,
"enableAutoCollectExternalLoggers": true,
"enableAutoCollectExceptions": true,
"enableAutoCollectHeartbeat": true,
"enableSendLiveMetrics": true,
...
    

تتوفر المجموعة الكاملة من التكوينات ، ما عليك سوى استخدام ملف json صالح.

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

لتمكين مراقبة العميل لتطبيق Java الخاص بك، تحتاج إلىإضافة جانب العميل في Java Script SDK يدوياً إلى التطبيق الخاص بك.

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

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

لقطة شاشة لإعدادات تطبيق خدمة التطبيق باستخدام إعدادات Application Insights المتوفرة.

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

اسم إعداد التطبيق التعريف القيمة‬
ApplicationInsightsAgent_EXTENSION_VERSION التمديد الرئيسي، الذي يتحكم في مراقبة وقت التشغيل. ~2في Windows أو في~3Linux.
XDT_MicrosoftApplicationInsights_NodeJS وضع علامة للتحكم في حالة تضمين عامل Node.js. 0 أو 1 تنطبق فقط في Windows.

إشعار

لا يتوفر محلل الملفات ومصحح اللقطات لتطبيقات Node.js

إعدادات تطبيق 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، يمكن أن يكون هذا القالب مفيدا. على وجه التحديد، راجع القسم الذي يبدأ في السطر 238.

لإنشاء قالب 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

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

فيما يلي دليل استكشاف الأخطاء وإصلاحها خطوة بخطوة للمراقبة المستندة إلى الملحقات/الوكلاء للتطبيقات المستندة إلى Node.js التي تعمل على خدمات تطبيقات Azure.

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

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

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

    تأكد من تعيين SDKPresent إلى خطأ وAgentInitializedSuccessfully إلى وIKey إلى صحيح.

    فيما يلي مثال لملف JSON:

        "AppType":"node.js",
    
        "MachineName":"c89d3a6d0357",
    
        "PID":"47",
    
        "AgentInitializedSuccessfully":true,
    
        "SDKPresent":false,
    
        "IKey":"00000000-0000-0000-0000-000000000000",
    
        "SdkVersion":"1.8.10"
    
    

    إذا SDKPresent كان صحيحاً هذا يشير إلى أن الملحق الكشف عن وجود بعض جوانب SDK بالفعل في التطبيق ثم سيتم التراجع.

ما الفرق بين المقاييس القياسية من 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.

ملاحظات الإصدار

للحصول على آخر التحديثات وإصلاحات الأخطاء، راجع ملاحظات الإصدار.

الخطوات التالية