مراقبة التطبيقات على Azure App Service وJava

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

إشعار

باستخدام تطبيقات Spring Boot Native Image، استخدم Azure Monitor OpenTelemetry Distro / Application Insights في مشروع تطبيق Java للصورة الأصلية ل Spring Boot بدلا من حل وكيل Application Insights Java الموضح أدناه.

تمكين "Application Insights"

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

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

يمكنك تشغيل المراقبة لتطبيقات Java التي تعمل في Azure App Service مع تحديد واحد فقط، ولا يلزم إجراء أي تغيير في التعليمات البرمجية. يضيف التكامل Application Insights Java 3.x ويجمع القياس عن بعد تلقائيا.

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

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

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

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

    إشعار

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

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

  3. هذه الخطوة الأخيرة اختيارية. بعد تحديد المورد الذي تريد استخدامه، يمكنك ضبط عامل Java. إذا لم تقم بتكوين عامل Java، يتم تطبيق التكوينات الافتراضية.

    مجموعة كاملةمن التكوينات متاحة، تحتاج فقط إلى لصقملف jsonصالح. استبعاد سلسلة الاتصال وأي تكوينات قيد المعاينة - يمكنك إضافة العناصر الموجودة حاليا في المعاينة عندما تصبح متوفرة بشكل عام.

    بمجرد تعديل التكوينات من خلال مدخل Microsoft Azure، يتم ملء متغير البيئة APPLICATIONINSIGHTS_CONFIGURATION_FILE تلقائيا ويظهر في لوحة إعدادات App Service. يحتوي هذا المتغير على محتوى json الكامل الذي قمت بلصقه في مربع نص تكوين مدخل Microsoft Azure لتطبيق Java الخاص بك.

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

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

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

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

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

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

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

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

إشعار

لا يتوفر محلل الملفات ومصحح اللقطات لتطبيقات Java

إعدادات تطبيق 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

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

استخدم دليلنا خطوة بخطوة لاستكشاف أخطاء التطبيقات المستندة إلى Java التي تعمل على Azure App Services وإصلاحها.

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

  2. فحص ملف السجل لمعرفة أن الوكيل قد بدأ بنجاح: تصفح إلى 'https://yoursitename.scm.azurewebsites.net/، تحت SSH قم بالتغيير إلى دليل الجذر، يقع ملف السجل تحت LogFiles/ApplicationInsights.

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

  3. بعد تمكين مراقبة التطبيق لتطبيق Java الخاص بك، يمكنك التحقق من أن العامل يعمل من خلال النظر في المقاييس المباشرة - حتى قبل النشر والتطبيق إلى App Service، سترى بعض الطلبات من البيئة. تذكر أن المجموعة الكاملة من بيانات تتبع الاستخدام متوفرة فقط عندما يتم نشر تطبيقك وتشغيله.

  4. تعيين متغير البيئة APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL إلى "تصحيح" إذا لم تشاهد أي أخطاء ولا يوجد بيانات تتبع الاستخدام

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

نشر أحدث إصدار من Application Insights Java يدويا

يتم تحديث إصدار Application Insights Java تلقائيا كجزء من تحديثات App Services.

إذا واجهت مشكلة تم إصلاحها في أحدث إصدار من Application Insights Java، يمكنك تحديثها يدويا.

للتحديث يدويا، اتبع الخطوات التالية:

  1. تحميل ملف جرة وكيل Java في App Service

    أ. أولا، احصل على أحدث إصدار من Azure CLI باتباع الإرشادات هنا.

    ب. بعد ذلك، احصل على أحدث إصدار من وكيل Application Insights Java باتباع الإرشادات هنا.

    جـ. بعد ذلك، انشر ملف jar لعامل Java إلى App Service باستخدام الأمر التالي: az webapp deploy --src-path applicationinsights-agent-{VERSION_NUMBER}.jar --target-path java/applicationinsights-agent-{VERSION_NUMBER}.jar --type static --resource-group {YOUR_RESOURCE_GROUP} --name {YOUR_APP_SVC_NAME}. بدلا من ذلك، يمكنك استخدام هذا الدليل لنشر العامل من خلال المكون الإضافي Maven.

  2. تعطيل Application Insights عبر علامة التبويب Application Insights في مدخل Microsoft Azure.

  3. بمجرد تحميل ملف jar العامل، انتقل إلى تكوينات App Service. إذا كنت بحاجة إلى استخدام أمر بدء التشغيل ل Linux، فالرجاء تضمين وسيطات jvm:

    لقطة شاشة لأمر بدء التشغيل.

    لا يحترم JAVA_OPTS أمر بدء التشغيل JavaSE أو CATALINA_OPTS Tomcat.

    إذا كنت لا تستخدم أمر بدء التشغيل، قم بإنشاء متغير بيئة جديد، JAVA_OPTS ل JavaSE أو CATALINA_OPTS ل Tomcat، بالقيمة -javaagent:{PATH_TO_THE_AGENT_JAR}/applicationinsights-agent-{VERSION_NUMBER}.jar.

  4. أعد تشغيل التطبيق لتطبيق التغييرات.

إشعار

إذا قمت بتعيين JAVA_OPTS ل JavaSE أو CATALINA_OPTS لمتغير بيئة Tomcat، سيتعين عليك تعطيل Application Insights في المدخل. بدلا من ذلك، إذا كنت تفضل تمكين Application Insights من المدخل، فتأكد من عدم تعيين JAVA_OPTS لمتغير JavaSE أو CATALINA_OPTS لمتغير Tomcat في إعدادات تكوينات App Service.

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

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

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