تمرين - إضافة التسجيل ومراقبة دالة Azure في المدخل

مكتمل

في الوحدة السابقة، تعرفت على بعض الفوائد لدمج Application Insights في تطبيق الدالة الخاص بك. كما تعرفت على بعض ميزات التسجيل الأخرى المتوفرة لفريق المطورين.

في هذه المرحلة من أبحاث المشروع، قمت بنشر تطبيق الدالة الخاص بك إلى Azure باستخدام Maven، وقمت باختبار تطبيق الدالة الخاص بك في الإنتاج. تتمثّل مهمتك التالية في إضافة وظائف التتبع والتسجيل إلى تطبيقك.

في هذا التمرين، يمكنك تحديث ملفات تكوين مشروع الوظيفة لدعم كل من دفق السجل وApplication Insights. يمكنك أيضا معرفة كيفية إضافة تعقب مخصص ومشغلات حدث Application Insight إلى التعليمات البرمجية لمشروعك.

دفق السجلات في الوقت الحقيقي

الآن بعد نشر تطبيق الوظائف وتشغيله على Azure، يمكنك استكشاف الأخطاء وإصلاحها باستخدام أمر Azure CLI البسيط للحصول على دفق السجل في الوقت الحقيقي من التطبيق.

  1. في مدخل Microsoft Azure، في صفحة Overview لدالة HttpExample. استخدم أيقونة Copy to clipboard لنسخ قيمة مجموعة الموارد والتطبيق Function.

  2. في نافذة Azure Cloud Shell، أدخل az webapp log tail -n <functionAppName> -g <resourceGroup> الأمر لدفق السجلات. استبدل <functionAppName> و <resourceGroup> بالقيم التي حفظتها في الخطوة السابقة. على سبيل المثال:

    az webapp log tail -n event-reporting-20240125192009873 -g learn-f0af729c-0493-4b45-a5b8-d6b4783b03da
    
    
  3. يجب أن تشاهد الإخراج مثل الرسالة التالية.

    2024-01-25T20:44:58  Welcome, you are now connected to log-streaming service. The default timeout is 2 hours. Change the timeout with the App Setting SCM_LOGSTREAM_TIMEOUT (in seconds). 
    2024-01-25T20:45:58  No new trace in the past 1 min(s).
    
  4. افتح علامة تبويب جديدة في مستعرض الويب الخاص بك، والصق عنوان URL الذي تم إنشاؤه بالكامل من التمرين السابق للوصول إلى تطبيق الوظائف لإنشاء بعض السجلات.

  5. عند الانتهاء من الاختبار، اضغط على Ctrl+C في Cloud Shell لإغلاق دفق السجل.

إضافة أدوات إلى مشروع Java الخاص بك لـ Application Insights

الآن بعد تمكين Application Insights للتطبيق الخاص بك، مهمتك التالية لتمكينه في التطبيق الخاص بك. لتمكين تسجيل التطبيق وApplication Insights، تحتاج إلى تعديل ملفات التكوين لتضمين المكتبات المطلوبة والتبعيات الأخرى.

هناك ملفان للتكوين تحتاج إلى تحديثهما: pom.xml host.json.

تعديل ملف pom.xml الخاص بك

  1. باستخدام Azure Cloud Shell، غيّر الدليل إلى جذر مشروعك:

    cd ~/event-reporting
    
  2. افتح ملف pom.xml الخاص بك باستخدام محرر التعليمة البرمجية Cloud Shell:

    code pom.xml
    
  3. أضف العناصر التالية إلى القسم المستقل <dependencies> لتمكين Application Insights لتطبيقك:

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>applicationinsights-web-auto</artifactId>
        <version>2.6.0</version>
    </dependency>
    

    إشعار

    تأكد من إضافة <dependency> إلى Application Instights إلى مجموعة <dependencies> المستقلة، وليس مجموعة <dependencies> الموجودة داخل العنصر <dependencyManagement>.

  4. اضغط على "Ctrl+S" لحفظ ملف pom.xml الخاص بك، ثم اضغط على "Ctrl+Q" لإغلاق محرر التعليمات البرمجية.

تعديل ملف host.json الخاص بك

  1. افتح ملف host.json الخاص بك باستخدام محرر التعليمة البرمجية Cloud Shell:

    code host.json
    
  2. أزل التعليمة البرمجية JSON الحالية، واستبدلها بالإعدادات التالية:

    {
        "version": "2.0",
        "extensionBundle": {
            "id": "Microsoft.Azure.Functions.ExtensionBundle",
            "version": "[1.*, 2.0.0)"
        },
        "logging": {
            "fileLoggingMode": "always",
            "logLevel": {
                "default": "Information"
            }
        },
        "applicationInsights": {
            "samplingSettings": {
                "isEnabled": true,
                "maxTelemetryItemsPerSecond" : 5
            }
        }
    }
    

    تم تحديد الإعدادات الخاصة بـ extensionBundle بالفعل، ولكن يحدد كل من logging وapplicationInsights العديد من الإعدادات لتلك الميزات.

  3. اضغط على "Ctrl+S" لحفظ ملف host.json الخاص بك، ثم اضغط على "Ctrl+Q" لإغلاق محرر التعليمة البرمجية.

إضافة تتبع التسجيل وApplication Insights إلى التعليمة البرمجية الخاصة بمشروعك

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

إضافة تسجيل إلى ملف Function.java الخاص بك

لإضافة تسجيل عام إلى الدالة الخاصة بك، يمكنك إضافة تعليمة برمجية مثل المثال التالي في النقاط الرئيسية في التعليمات البرمجية للتطبيق الخاص بك، حيث يمكنك استبدال [LOG MESSAGE] السلسلة برسالة تريد رؤيتها في ملفات سجل التطبيق الخاص بك.

context.getLogger().info("[LOG MESSAGE]");

لإضافة التسجيل إلى تطبيقك، استخدم الخطوات التالية.

  1. افتح ملف Function.java الخاص بتطبيقك في محرر Cloud Shell:

    code ~/event-reporting/src/main/java/com/contoso/functions/Function.java
    

    إذا قمت بفحص التعليمات البرمجية الموجودة، فستلاحظ وجود أمر موجود context.getLogger() ؛ إنها التعليمات الأولى بعد تعريف الدالة run() .

  2. حدد موقع القسم التالي من التعليمة البرمجية، والذي يختبر سلسلة استعلام GET فارغة أو طلب POST فارغاً:

    if (name == null) {
        return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a name on the query string or in the request body").build();
    } else {
        return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build();
    }
    
  3. عدّل هذا القسم من التعليمة البرمجية حتى يحتوي على أمري context.getLogger() اللذين يخرجان حالة دالتك إلى نظام التسجيل:

    if (name == null) {
        context.getLogger().info("Execution failure - Incorrect or missing parameter used.");
        return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a name on the query string or in the request body").build();
    } else {
        context.getLogger().info("Execution success - name parameter = " + name);
        return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build();
    }
    
  4. اضغط على Ctrl+S لحفظ ملف Function.java ، ولكن لا تغلق المحرر؛ ستقوم بإضافة تعليمات برمجية إلى التطبيق الخاص بك في القسم التالي من هذا التمرين.

إضافة تتبع Application Insights لملف Function.java الخاص بك

  1. أضف عبارة import التالية إلى مجموعة الواردات الحالية؛ تستورد هذه العبارة مكتبة تتبع الاستخدام الخاصة بـ Application Insights:

    import com.microsoft.applicationinsights.TelemetryClient;
    
  2. أضف التعريف التالي إلى فئة Function() الخاصة بتطبيقك؛ هذه العبارة تُنشئ مثيلاً من كائن TelemetryClient:

    private TelemetryClient telemetry = new TelemetryClient();
    
  3. انسخ كلاً من عبارات context.getLogger() وعدّل التعليمة البرمجية حتى تستدعي كلاً من الإدخالات المكررة telemetry.trackEvent() بدلاً من context.getLogger():

    . . .
    context.getLogger().info("Java HTTP trigger processed a request.");
    telemetry.trackEvent("Java HTTP trigger processed a request.");
    
    // Parse query parameter
    String query = request.getQueryParameters().get("name");
    String name = request.getBody().orElse(query);
    
    if (name == null) {
        context.getLogger().info("Execution failure - Incorrect or missing parameter used.");
        telemetry.trackEvent("Execution failure - Incorrect or missing parameter used.");
        return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a name on the query string or in the request body").build();
    } else {
        context.getLogger().info("Execution success - name parameter = " + name);
        telemetry.trackEvent("Execution success - name parameter = " + name);
        return request.createResponseBuilder(HttpStatus.OK).body("Hi, " + name).build();
    }
    . . .
    
  4. اضغط على "Ctrl+S" لحفظ ملف Function.java الخاص بك، ثم اضغط على "Ctrl+Q" لإغلاق محرر التعليمة البرمجية.

  5. آخر شيء يجب القيام به هو بناء تطبيق دالتك وتجميعه وإعادة نشره.

    cd ~/event-reporting
    mvn clean package azure-functions:deploy
    

تتم الآن إضافة التسجيل وجمع بيانات Application Insights إلى وظيفتك.

استخدام Application Insights لمراقبة دالة Azure الخاصة بك

تم الآن تحديث تطبيقك لدعم التسجيل التفصيلي باستخدام كل من مسجّل النظام وApplication Insights.

  1. لإنشاء عينة من حركة مرور HTTP، انسخ عنوان URL الذي استخدمته لاختبار التطبيق الخاص بك في مستعرض ويب في التمرين السابق. استخدم عنوان URL هذا مع cURL لإنشاء تكرار حلقي في Azure Cloud Shell؛ على سبيل المثال:

    while :; do curl https://event-reporting-20200102030405006.azurewebsites.net/api/HttpExample?name=Bob; sleep 1; done
    
  2. سجّل الدخول إلى "مدخل Azure" باستخدام الحساب نفسه الذي استخدمته في تنشيط بيئة الاختبار المعزولة.

  3. حدد "All resources" من القائمة الموجودة على اليسار.

  4. حدد دالتك من قائمة الموارد؛ في هذا التمرين يبدأ اسم دالتك بتقرير الحدث. على سبيل المثال: event-reporting-20200102030405006.

  5. عرض نشاط دفق السجل الخاص بك:

    1. حدد Log stream في قائمة Function App .

    2. افتح القائمة المنسدلة App Insights Logs ، وحدد Filesystem Logs.

      Image showing where to find Log Streaming.

    3. لاحظ أن عينة حركة المرور الخاصة بك تنشئ سلسلة من إدخالات السجل.

      Image showing Log Streaming.

  6. عرض نشاط المقاييس المباشرة الخاص بك:

    1. حدد القائمة المنسدلة Filesystem Logs وحدد App Insights Logs.

    2. حدد Open in Live Metrics. الآن يمكنك أن ترى أن عينة نسبة استخدام الشبكة الخاصة بك تنشئ نتائج Application Insights وLive Metrics.

      Image showing Application Insights and Live Metrics highlights.

تهانينا، لقد قمت بتكوين Azure Function بنجاح للتسجيل التفصيلي.

قبل المتابعة، عد إلى Cloud Shell واضغط على "Ctrl+C" لإغلاق التكرار الحلقي للأوامر.