خيارات التكوين: Azure Monitor Application Insights ل Java

توضح هذه المقالة كيفية تكوين Azure Monitor Application Insights ل Java.

تسلسل الاتصال واسم الدور

الاتصال سلسلة واسم الدور هما الإعدادات الأكثر شيوعا التي تحتاجها للبدء:

{
  "connectionString": "...",
  "role": {
    "name": "my cloud role name"
  }
}

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

يتم توفير مزيد من المعلومات وخيارات التكوين في الأقسام التالية.

المسار الخاص بملف التكوين

يتوقع Application Insights Java 3.x، بشكل افتراضي، أن يتم تسمية ملف التكوينapplicationinsights.json، وأن يكون موجودًا في نفس الدليل كـapplicationinsights-agent-3.5.2.jar.

يمكنك تحديد مسار ملف التكوين الخاص بك باستخدام أحد هذين الخيارين:

  • متغير البيئة APPLICATIONINSIGHTS_CONFIGURATION_FILE
  • خاصية النظام Javaapplicationinsights.configuration.file

إذا قمت بتحديد مسار نسبي، فإنه يحل بالنسبة إلى الدليل حيث applicationinsights-agent-3.5.2.jar يوجد.

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

سلسلة الاتصال

مطلوب تسلسل اتصال. يمكنك العثور على سلسلة الاتصال في مورد Application Insights.

لقطة شاشة تعرض سلسلة اتصال Application Insights.

{
  "connectionString": "..."
}

يمكنك أيضا تعيين سلسلة الاتصال باستخدام متغير APPLICATIONINSIGHTS_CONNECTION_STRINGالبيئة . ثم يأخذ الأسبقية على سلسلة الاتصال المحددة في تكوين JSON.

أو يمكنك تعيين سلسلة الاتصال باستخدام خاصية applicationinsights.connection.stringنظام Java . كما أن لها الأسبقية على سلسلة الاتصال المحددة في تكوين JSON.

كما يمكنك تعيين سلسلة الاتصال بتحديد ملف لتحميل سلسلة الاتصال منه.

إذا قمت بتحديد مسار نسبي، فإنه يحل بالنسبة إلى الدليل حيث applicationinsights-agent-3.5.2.jar يوجد.

{
  "connectionString": "${file:connection-string-file.txt}"
}

يجب أن يحتوي الملف على سلسلة الاتصال فقط ولا شيء آخر.

يؤدي عدم تعيين سلسلة الاتصال إلى تعطيل عامل Java.

إذا كان لديك تطبيقات متعددة تم نشرها في نفس جهاز Java الظاهري (JVM) وتريد منهم إرسال بيانات تتبع الاستخدام إلى سلسلة الاتصال مختلفة، فشاهد الاتصال تجاوز سلسلة (معاينة).

اسم دور السحابة

يتم استخدام اسم دور السحابة لتسمية المكون على خريطة التطبيق.

إذا كنت تريد تعيين اسم دور شبكة النظير:

{
  "role": {   
    "name": "my cloud role name"
  }
}

إذا لم يتم تعيين اسم دور السحابة، يتم استخدام اسم مورد Application Insights لتسمية المكون على خريطة التطبيق.

كما يمكنك تحديد اسم دور شبكة النظير باستخدام متغير البيئةAPPLICATIONINSIGHTS_ROLE_NAME. ثم يأخذ الأسبقية على اسم دور السحابة المحدد في تكوين JSON.

أو يمكنك تعيين اسم دور السحابة باستخدام خاصية applicationinsights.role.nameنظام Java . كما أن لها الأسبقية على اسم دور السحابة المحدد في تكوين JSON.

في حال امتلاكك تطبيقات متعددة موزعة في نفس جهاز Java الظاهري وتريد منها إرسال بيانات تتبع الاستخدام إلى الأسماء المختلفة لدور السحابة، راجع تجاوزات اسم دور السحابة (الإصدار الأولي).

مثيل دور السحابة

يتم تعيين مثيل دور السحابة افتراضيا إلى اسم الجهاز.

إذا كنت تريد تعيين مثيل دور شبكة النظير إلى شيء مختلف بدلًا من اسم الجهاز:

{
  "role": {
    "name": "my cloud role name",
    "instance": "my cloud role instance"
  }
}

يمكنك أيضا تعيين مثيل دور السحابة باستخدام متغير APPLICATIONINSIGHTS_ROLE_INSTANCEالبيئة . ثم يأخذ الأسبقية على مثيل دور السحابة المحدد في تكوين JSON.

أو يمكنك تعيين مثيل دور السحابة باستخدام خاصية applicationinsights.role.instanceنظام Java . كما أن لها الأسبقية على مثيل دور السحابة المحدد في تكوين JSON.

أخذ عينات

إشعار

يمكن أن يكون أخذ العينات طريقة رائعة لتقليل تكلفة Application Insights. تأكد من إعداد تكوين أخذ العينات بشكل مناسب لحالة الاستخدام الخاصة بك.

يستند أخذ العينات إلى الطلب، ما يعني أنه إذا تم التقاط طلب (أخذ عينات)، وكذلك تبعياته وسجلاته واستثناءاته.

يعتمد أخذ العينات أيضا على معرف التتبع للمساعدة في ضمان قرارات أخذ العينات المتسقة عبر خدمات مختلفة.

ينطبق أخذ العينات فقط على السجلات داخل الطلب. يتم دائما تجميع السجلات غير الموجودة داخل الطلب (على سبيل المثال، سجلات بدء التشغيل) بشكل افتراضي. إذا كنت ترغب في أخذ عينات من هذه السجلات، يمكنك استخدام تجاوزات أخذ العينات.

أخذ العينات محدودة السعر

بدءا من 3.4.0، يتوفر أخذ العينات محدودة المعدل وهو الآن الافتراضي.

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

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

إشعار

أخذ العينات محدود المعدل تقريبي لأنه داخليا يجب أن يتكيف مع مرور الوقت لنسبة أخذ العينات "الثابتة" لإصدار أعداد دقيقة من العناصر في كل سجل بيانات تتبع الاستخدام. داخليا، يتم ضبط أخذ العينات محدودة المعدل للتكيف بسرعة (0.1 ثانية) مع أحمال التطبيق الجديدة. لهذا السبب، يجب ألا ترى أنه يتجاوز المعدل الذي تم تكوينه كثيرا، أو لفترة طويلة جدا.

يوضح هذا المثال كيفية تعيين أخذ العينات لالتقاط طلب واحد على الأكثر (تقريبا) في الثانية:

{
  "sampling": {
    "requestsPerSecond": 1.0
  }
}

requestsPerSecond يمكن أن يكون عشريا، بحيث يمكنك تكوينه لالتقاط أقل من طلب واحد في الثانية إذا كنت تريد ذلك. على سبيل المثال، قيمة 0.5 تعني التقاط طلب واحد على الأكثر كل ثانيتين.

يمكنك أيضا تعيين النسبة المئوية لأخذ العينات باستخدام متغير APPLICATIONINSIGHTS_SAMPLING_REQUESTS_PER_SECONDالبيئة . ثم يأخذ الأسبقية على حد المعدل المحدد في تكوين JSON.

أخذ العينات بنسبة مئوية ثابتة

يوضح هذا المثال كيفية تعيين أخذ العينات لالتقاط ثلث جميع الطلبات تقريبا:

{
  "sampling": {
    "percentage": 33.333
  }
}

يمكنك أيضا تعيين النسبة المئوية لأخذ العينات باستخدام متغير APPLICATIONINSIGHTS_SAMPLING_PERCENTAGEالبيئة . ثم يأخذ الأسبقية على النسبة المئوية لأخذ العينات المحددة في تكوين JSON.

إشعار

بالنسبة إلى النسبة المئوية لأخذ العينات، اختر نسبة مئوية قريبة من 100/N، حيث N عبارة عن عدد صحيح. حاليا، أخذ العينات لا يدعم القيم الأخرى.

تجاوزات أخذ النموذج

تسمح لك تجاوزات أخذ العينات بتجاوز النسبة المئوية الافتراضية لأخذ العينات. على سبيل المثال، يمكنك:

  • تعيين النسبة المئوية لأخذ العينات إلى 0، أو بعض القيمة الصغيرة، لإجراء فحوصات صحية صاخبة.
  • تعيين النسبة المئوية لأخذ العينات إلى 0، أو قيمة صغيرة، لاستدعاءات التبعية صاخبة.
  • تعيين النسبة المئوية لأخذ العينات إلى 100 لنوع طلب مهم. على سبيل المثال، يمكنك استخدام /login على الرغم من تكوين أخذ العينات الافتراضي إلى شيء أقل.

لمزيد من المعلومات، راجع وثائق تجاوز أخذ العينات .

مقاييس ملحقات إدارة Java

إذا كنت ترغب في جمع بعض مقاييس Java Management Extensions (JMX) الأخرى:

{
  "jmxMetrics": [
    {
      "name": "JVM uptime (millis)",
      "objectName": "java.lang:type=Runtime",
      "attribute": "Uptime"
    },
    {
      "name": "MetaSpace Used",
      "objectName": "java.lang:type=MemoryPool,name=Metaspace",
      "attribute": "Usage.used"
    }
  ]
}

في مثال التكوين السابق:

  • name هو اسم المقياس الذي تم تعيينه إلى مقياس JMX هذا (يمكن أن يكون أي شيء).
  • objectNameهو اسم الكائن الذي JMX MBean تريد جمعه. العلامة النجمية لحرف البدل (*) مدعومة.
  • attribute هو اسم السمة JMX MBean داخل الذي تريد جمعه.

يتم دعم القيم القياسية الرقمية والقيم المنطقية ل JMX. يتم تعيين مقاييس JMX المنطقية إلى 0 للخطأ وللصحيح 1 .

لمزيد من المعلومات، راجع وثائق مقاييس JMX.

الأبعاد المخصصة

إذا كنت ترغب في إضافة أبعاد مخصصة إلى جميع بيانات تتبع الاستخدام الخاصة بك:

{
  "customDimensions": {
    "mytag": "my value",
    "anothertag": "${ANOTHER_VALUE}"
  }
}

يمكنك استخدام ${...} لقراءة القيمة من متغير البيئة المحدد عند بدء التشغيل.

إشعار

بدءا من الإصدار 3.0.2، إذا أضفت بعدا مخصصا باسم service.version، يتم تخزين القيمة في application_Version العمود في جدول Application Insights Logs بدلا من بعد مخصص.

السمة الموروثة (إصدار أولي)

بدءا من الإصدار 3.2.0، يمكنك تعيين بعد مخصص برمجيا على بيانات تتبع الاستخدام لطلبك. يضمن التوريث حسب التبعية وتسجيل القياس عن بعد. يتم التقاط جميعها في سياق هذا الطلب.

{
  "preview": {
    "inheritedAttributes": [
      {
        "key": "mycustomer",
        "type": "string"
      }
    ]
  }
}

ثم في بداية كل طلب، اتصل:

Span.current().setAttribute("mycustomer", "xyz");

راجع أيضا: إضافة خاصية مخصصة إلى Span.

تجاوزات سلسلة الاتصال (معاينة)

هذه الميزة قيد الإصدار الأولي، بدءًا من 3.4.0.

تسمح لك تجاوزات سلسلة الاتصال ion بتجاوز سلسلة الاتصال الافتراضي. على سبيل المثال، يمكنك:

  • تعيين سلسلة الاتصال واحد لبادئة /myapp1مسار HTTP واحدة .
  • تعيين سلسلة الاتصال آخر لبادئة /myapp2/مسار HTTP أخرى .
{
  "preview": {
    "connectionStringOverrides": [
      {
        "httpPathPrefix": "/myapp1",
        "connectionString": "..."
      },
      {
        "httpPathPrefix": "/myapp2",
        "connectionString": "..."
      }
    ]
  }
}

تجاوزات اسم دور السحابة (الإصدار الأولي)

هذه الميزة في مرحلة المعاينة، بدءاً من 3.3.0.

تسمح لك تجاوزات اسم دور السحابة بتجاوز اسم دور السحابة الافتراضي. على سبيل المثال، يمكنك:

  • تعيين اسم دور سحابة واحد لبادئة /myapp1مسار HTTP واحدة .
  • تعيين اسم دور سحابي آخر لبادئة /myapp2/مسار HTTP أخرى .
{
  "preview": {
    "roleNameOverrides": [
      {
        "httpPathPrefix": "/myapp1",
        "roleName": "Role A"
      },
      {
        "httpPathPrefix": "/myapp2",
        "roleName": "Role B"
      }
    ]
  }
}

سلسلة الاتصال تم تكوينها في وقت التشغيل

بدءا من الإصدار 3.4.8، إذا كنت بحاجة إلى القدرة على تكوين سلسلة الاتصال في وقت التشغيل، أضف هذه الخاصية إلى تكوين json الخاص بك:

{
  "connectionStringConfiguredAtRuntime": true
}

أضف applicationinsights-core إلى تطبيقك:

<dependency>
  <groupId>com.microsoft.azure</groupId>
  <artifactId>applicationinsights-core</artifactId>
  <version>3.5.2</version>
</dependency>

استخدم الأسلوب الثابت configure(String) في الفئة com.microsoft.applicationinsights.connectionstring.ConnectionString.

إشعار

سيتم إسقاط أي بيانات تتبع الاستخدام التي يتم التقاطها قبل تكوين سلسلة الاتصال، لذلك من الأفضل تكوينه في أقرب وقت ممكن في بدء تشغيل التطبيق الخاص بك.

الجمع التلقائي لتبعيات InProc (الإصدار الأولي)

بدءا من الإصدار 3.2.0، إذا كنت تريد التقاط تبعيات وحدة التحكم "InProc"، فاستخدم التكوين التالي:

{
  "preview": {
    "captureControllerSpans": true
  }
}

مستعرض SDK Loader (معاينة)

تقوم هذه الميزة تلقائيا بإدخال محمل SDK المستعرض في صفحات HTML الخاصة بالتطبيق، بما في ذلك تكوين سلسلة الاتصال ion المناسبة.

على سبيل المثال، عندما يقوم تطبيق java الخاص بك بإرجاع استجابة مثل:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Title</title>
  </head>
  <body>
  </body>
</html>

يعدل تلقائيا للعودة:

<!DOCTYPE html>
<html lang="en">
  <head>
    <script type="text/javascript">
    !function(v,y,T){var S=v.location,k="script"
    <!-- Removed for brevity -->
    connectionString: "YOUR_CONNECTION_STRING"
    <!-- Removed for brevity --> }});
    </script>
    <title>Title</title>
  </head>
  <body>
  </body>
</html>

يهدف البرنامج النصي إلى مساعدة العملاء على تعقب بيانات مستخدم الويب، وإرسال بيانات تتبع الاستخدام من جانب الخادم إلى مدخل Microsoft Azure للمستخدمين. يمكن العثور على التفاصيل في ApplicationInsights-JS.

إذا كنت ترغب في تمكين هذه الميزة، أضف خيار التكوين أدناه:

{
  "preview": {
    "browserSdkLoader": {
      "enabled": true
    }
  }
}

معالجات بيانات تتبع الاستخدام (إصدار أولي)

يمكنك استخدام معالجات بيانات تتبع الاستخدام لتكوين القواعد التي يتم تطبيقها لطلب بيانات تتبع الاستخدام والتبعية وتتبعها. على سبيل المثال، يمكنك:

  • إخفاء البيانات الحساسة.
  • أضف مكوّنات مخصصة بشكل مشروط.
  • تحديث اسم الامتداد، والذي يستخدم لتجميع بيانات تتبع الاستخدام المماثلة في مدخل Microsoft Azure.
  • قطع سمات محددة الامتداد للتحكم في تكاليف الدخول.

لمزيد من المعلومات، راجع وثائق معالج بيانات تتبع الاستخدام.

إشعار

إذا كنت ترغب في إسقاط نطاقات محددة (كاملة) للتحكم في تكلفة الاستيعاب، فشاهد تجاوزات أخذ العينات.

الأجهزة المخصصة (معاينة)

بدءا من verion 3.3.1، يمكنك التقاط امتدادات لأسلوب في التطبيق الخاص بك:

{
  "preview": {
    "customInstrumentation": [
      {
        "className": "my.package.MyClass",
        "methodName": "myMethod"
      }
    ]
  }
}

تسجيل مجمع تلقائيًا

يتم إعادة هيكلة Log4j وLogback وتسجيل JBoss وتسجيل java.util.logging تلقائيا. يتم تحديد التسجيل الذي يتم إجراؤه عبر أطر عمل التسجيل هذه تلقائيا.

يتم تسجيل التسجيل فقط إذا كان:

  • يفي بالمستوى المكون لإطار عمل التسجيل.
  • يفي أيضا بالمستوى الذي تم تكوينه ل Application Insights.

على سبيل المثال، إذا تم تكوين إطار عمل التسجيل الخاص بك لتسجيل ( WARN وقمت بتكوينه كما هو موضح سابقا) من الحزمة com.example، وتم تكوين Application Insights لالتقاط INFO (وقمت بتكوينه كما هو موضح)، فإن Application Insights يلتقط WARN فقط (وأكثر خطورة) من الحزمة com.example.

يكون INFOالمستوى الافتراضي المكون لـApplication Insights. إذا كنت تود تغيير هذا المستوى:

{
  "instrumentation": {
    "logging": {
      "level": "WARN"
    }
  }
}

يمكنك أيضا تعيين المستوى باستخدام متغير APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVELالبيئة . ثم يأخذ الأسبقية على المستوى المحدد في تكوين JSON.

يمكنك استخدام هذه القيم الصالحة level لتحديدها في applicationinsights.json الملف. يوضح الجدول كيفية مطابقتها لمستويات التسجيل في أطر عمل تسجيل مختلفة.

المستوى Log4j تسجيل الدخول JBoss يوليو
إيقاف التشغيل إيقاف التشغيل إيقاف التشغيل إيقاف التشغيل إيقاف التشغيل
فادح فادح خطأ فادح شديد
خطأ (أو شديد) خطأ خطأ خطأ شديد
حذر (أو تحذير) حذر حذر حذر ‏‏تحذير
معلومات معلومات معلومات معلومات معلومات
تكوين تتبع الأخطاء تتبع الأخطاء تتبع الأخطاء تكوين
تتبع الأخطاء (أو دقيق) تتبع الأخطاء تتبع الأخطاء تتبع الأخطاء دقيق
أدق تتبع الأخطاء تتبع الأخطاء تتبع الأخطاء أدق
تتبع (أو أفضل) التتبع التتبع التتبع أفضل
ALL ALL ALL ALL ALL

إشعار

إذا تم تمرير كائن استثناء إلى المسجل، فستظهر رسالة السجل (وتفاصيل عنصر الاستثناء) في مدخل Microsoft Azure ضمن exceptions الجدول بدلا من traces الجدول. إذا كنت تريد رؤية رسائل السجل عبر كل من الجدولين traces و exceptions ، يمكنك كتابة استعلام سجلات (Kusto) للاتحاد عبرهما. على سبيل المثال:

union traces, (exceptions | extend message = outerMessage)
| project timestamp, message, itemType

علامات السجل (معاينة)

بدءا من 3.4.2، يمكنك التقاط علامات السجل ل Logback وLog4j 2:

{
  "preview": {
    "captureLogbackMarker":  true,
    "captureLog4jMarker":  true
  }
}

سمات السجل الأخرى ل Logback (معاينة)

بدءا من 3.4.3، يمكنك التقاط FileNameو ClassNameMethodNameو و LineNumberل Logback:

{
  "preview": {
    "captureLogbackCodeAttributes": true
  }
}

تحذير

قد يضيف التقاط سمات التعليمات البرمجية حملا للأداء.

مستوى التسجيل كبعد مخصص

بدءا من الإصدار 3.3.0، LoggingLevel لا يتم التقاطها بشكل افتراضي كجزء من البعد المخصص "تتبعات" لأن تلك البيانات تم التقاطها بالفعل في SeverityLevel الحقل.

إذا لزم الأمر، يمكنك إعادة تمكين السلوك السابق مؤقتا:

{
  "preview": {
    "captureLoggingLevelAsCustomDimension": true
  }
}

مقاييس Micrometer المحددة تلقائيا (بما في ذلك مقاييس Spring Boot Actuator)

إذا كان التطبيق الخاص بك يستخدم Micrometer، يتم تحديد المقاييس التي يتم إرسالها إلى السجل العمومي Micrometer تلقائيا.

أيضا، إذا كان تطبيقك يستخدم Spring Boot Actuator، يتم أيضا تحديد المقاييس التي تم تكوينها بواسطة Spring Boot Actuator تلقائيا.

لإرسال مقاييس مخصصة باستخدام ميكرومتر:

  1. أضف Micrometer إلى التطبيق الخاص بك كما هو موضح في المثال التالي.

    <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-core</artifactId>
      <version>1.6.1</version>
    </dependency>
    
  2. استخدم السجل العمومي Micrometer لإنشاء مقياس كما هو موضح في المثال التالي.

    static final Counter counter = Metrics.counter("test.counter");
    
  3. استخدم العداد لتسجيل المقاييس باستخدام الأمر التالي.

    counter.increment();
    
  4. يتم استيعاب المقاييس في جدول customMetrics ، مع العلامات التي تم التقاطها في customDimensions العمود. يمكنك أيضا عرض المقاييس في مستكشف المقاييس ضمن مساحة اسم المقياس Log-based metrics .

    إشعار

    يستبدل Application Insights Java جميع الأحرف غير الأبجدية الرقمية (باستثناء الشرطات) في اسم مقياس Micrometer بشرطات سفلية. ونتيجة لذلك، سيظهر المقياس السابق test.counter ك test_counter.

لتعطيل الفرز التلقائي لمقاييس Micrometer ومقاييس Spring Boot Actuator:

إشعار

تتم فوترة المقاييس المخصصة بشكل منفصل وقد تؤدي إلى تكاليف إضافية. تأكد من التحقق من معلومات التسعير. لتعطيل مقاييس Micrometer وSpring Boot Actuator، أضف التكوين التالي إلى ملف التكوين الخاص بك.

{
  "instrumentation": {
    "micrometer": {
      "enabled": false
    }
  }
}

إخفاء استعلام الاتصال قاعدة بيانات Java

يتم إخفاء القيم الحرفية في استعلامات الاتصال لقاعدة بيانات Java (JDBC) بشكل افتراضي لتجنب التقاط البيانات الحساسة عن طريق الخطأ.

بدءا من 3.4.0، يمكن تعطيل هذا السلوك. على سبيل المثال:

{
  "instrumentation": {
    "jdbc": {
      "masking": {
        "enabled": false
      }
    }
  }
}

إخفاء الاستعلام Mongo

يتم إخفاء القيم الحرفية في استعلامات Mongo بشكل افتراضي لتجنب التقاط البيانات الحساسة عن طريق الخطأ.

بدءا من 3.4.0، يمكن تعطيل هذا السلوك. على سبيل المثال:

{
  "instrumentation": {
    "mongo": {
      "masking": {
        "enabled": false
      }
    }
  }
}

رؤوس عناوين HTTP

بدءاً من الإصدار 3.3.0، يمكنك تسجيل عناوين الطلب والاستجابة على بيانات تتبع استخدام خادمك (طلبك):

{
  "preview": {
    "captureHttpServerHeaders": {
      "requestHeaders": [
        "My-Header-A"
      ],
      "responseHeaders": [
        "My-Header-B"
      ]
    }
  }
}

أسماء العناوين غير حساسة لحالة الأحرف.

يتم التقاط الأمثلة السابقة ضمن أسماء http.request.header.my_header_a الخصائص و http.response.header.my_header_b.

وبالمثل، يمكنك تسجيل عناوين الطلب والاستجابة على بيانات تتبع استخدام عميلك (التبعية):

{
  "preview": {
    "captureHttpClientHeaders": {
      "requestHeaders": [
        "My-Header-C"
      ],
      "responseHeaders": [
        "My-Header-D"
      ]
    }
  }
}

مرة أخرى، أسماء العنوان غير حساسة لحالة الأحرف. يتم التقاط الأمثلة السابقة ضمن أسماء http.request.header.my_header_c الخصائص و http.response.header.my_header_d.

رموز استجابة HTTP server 4xx

بشكل افتراضي، يتم التقاط طلبات خادم HTTP التي تؤدي إلى رموز استجابة 4xx كأخطاء.

بدءا من الإصدار 3.3.0، يمكنك تغيير هذا السلوك لالتقاطها كنجاح:

{
  "preview": {
    "captureHttpServer4xxAsError": false
  }
}

منع بيانات تتبع الاستخدام المحددة التي تم تحديدها تلقائيا

بدءا من الإصدار 3.0.3، يمكن منع القياس عن بعد المحدد تلقائيا باستخدام خيارات التكوين هذه:

{
  "instrumentation": {
    "azureSdk": {
      "enabled": false
    },
    "cassandra": {
      "enabled": false
    },
    "jdbc": {
      "enabled": false
    },
    "jms": {
      "enabled": false
    },
    "kafka": {
      "enabled": false
    },
    "micrometer": {
      "enabled": false
    },
    "mongo": {
      "enabled": false
    },
    "quartz": {
      "enabled": false
    },
    "rabbitmq": {
      "enabled": false
    },
    "redis": {
      "enabled": false
    },
    "springScheduling": {
      "enabled": false
    }
  }
}

يمكنك أيضًا، منع هذه التقارير عن حالة النظام عن طريق تعيين متغيرات البيئة falseهذه على:

  • APPLICATIONINSIGHTS_INSTRUMENTATION_AZURE_SDK_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_CASSANDRA_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_JDBC_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_JMS_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_KAFKA_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_MICROMETER_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_MONGO_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_RABBITMQ_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_REDIS_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_SPRING_SCHEDULING_ENABLED

ثم تأخذ هذه المتغيرات الأسبقية على المتغيرات الممكنة المحددة في تكوين JSON.

إشعار

إذا كنت تبحث عن مزيد من التحكم الدقيق، على سبيل المثال، لمنع بعض مكالمات redis ولكن ليس كل مكالمات redis، فشاهد تجاوزات أخذ العينات.

لمعاينة الأجهزة

بدءا من الإصدار 3.2.0، يمكنك تمكين أدوات المعاينة التالية:

{
  "preview": {
    "instrumentation": {
      "akka": {
        "enabled": true
      },
      "apacheCamel": {
        "enabled": true
      },
      "grizzly": {
        "enabled": true
      },
      "ktor": {
        "enabled": true
      },
      "play": {
        "enabled": true
      },
      "r2dbc": {
        "enabled": true
      },
      "springIntegration": {
        "enabled": true
      },
      "vertx": {
        "enabled": true
      }
    }
  }
}

إشعار

تتوفر أجهزة Akka بدءا من الإصدار 3.2.2. تتوفر أدوات مكتبة Vertx HTTP بدءا من الإصدار 3.3.0.

الفاصل الزمني القياسي

يتم التقاط المقاييس كل 60 ثانية، بشكل افتراضي.

يمكنك تغيير ذلك الفاصل الزمني، بدءا من الإصدار 3.0.3:

{
  "metricIntervalSeconds": 300
}

بدءا من 3.4.9 GA، يمكنك أيضا تعيين metricIntervalSeconds باستخدام متغير APPLICATIONINSIGHTS_METRIC_INTERVAL_SECONDSالبيئة . ثم يأخذ الأسبقية على metricIntervalSeconds المحدد في تكوين JSON.

ينطبق الإعداد على المقاييس التالية:

رسالة كشف أخطاء الاتصال

يرسل Application Insights Java 3.x مقياس رسالة كشف أخطاء الاتصال مرة واحدة كل 15 دقيقة بشكل افتراضي. إذا كنت تستخدم مقياس رسالة كشف أخطاء الاتصال لتشغيل التنبيهات، يمكنك زيادة تكرار رسالة كشف أخطاء الاتصال هذه:

{
  "heartbeat": {
    "intervalSeconds": 60
  }
}

إشعار

لا يمكنك زيادة الفاصل الزمني إلى أكثر من 15 دقيقة لأن بيانات رسالة كشف أخطاء الاتصال تستخدم أيضا لتتبع استخدام Application Insights.

المصادقة

إشعار

ميزة المصادقة هي GA منذ الإصدار 3.4.17.

يمكنك استخدام المصادقة لتكوين العامل لإنشاء بيانات اعتماد الرمز المميز المطلوبة لمصادقة Microsoft Entra. لمزيد من المعلومات، راجع وثائق المصادقة .

وكيل HTTP

إذا كان تطبيقك خلف جدار حماية ولا يمكنه الاتصال مباشرة ب Application Insights، فراجع عناوين IP المستخدمة من قبل Application Insights.

لحل هذه المشكلة، يمكنك تكوين Application Insights Java 3.x لاستخدام وكيل HTTP.

{
  "proxy": {
    "host": "myproxy",
    "port": 8080
  }
}

يمكنك أيضا تعيين وكيل http باستخدام متغير APPLICATIONINSIGHTS_PROXYالبيئة ، والذي يأخذ التنسيق https://<host>:<port>. ثم يأخذ الأسبقية على الوكيل المحدد في تكوين JSON.

يحترم Application Insights Java 3.x أيضا الخصائص العمومية https.proxyHost وخصائص https.proxyPort النظام إذا تم تعيينها، و http.nonProxyHosts، إذا لزم الأمر.

الاسترداد من حالات فشل التحويل

عند إرسال بيانات تتبع الاستخدام إلى خدمة Application Insights، يخزن Application Insights Java 3.x بيانات تتبع الاستخدام إلى القرص ويستمر في إعادة المحاولة من القرص.

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

{
  "preview": {
    "diskPersistenceMaxSizeMb": 50
  }
}

تشخيص ذاتي

يشير "التشخيص الذاتي" إلى تسجيل الدخول من Application Insights Java 3.x. يمكن أن تكون هذه الوظيفة مفيدة لاكتشاف وتشخيص المشكلات المتعلقة بـApplication Insights نفسه.

يسجل Application Insights Java 3.x بصفة افتراضية على مستوى INFO لكل من الملف applicationinsights.log ووحدة التحكم، المطابقة لهذا التكوين:

{
  "selfDiagnostics": {
    "destination": "file+console",
    "level": "INFO",
    "file": {
      "path": "applicationinsights.log",
      "maxSizeMb": 5,
      "maxHistory": 1
    }
  }
}

في مثال التكوين السابق:

  • level يمكن أن تكون واحدة من OFF أو ERROR أو WARN أو INFO أو DEBUG أو TRACE.
  • path يمكن أن يكون مسارًا نسبيًّا أو مطلقًا. تُحل المسارات النسبية مقابل الدليل حيث applicationinsights-agent-3.5.2.jar يوجد.

بدءا من الإصدار 3.0.2، يمكنك أيضا تعيين التشخيص level الذاتي باستخدام متغير APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVELالبيئة . ثم يأخذ الأسبقية على مستوى التشخيص الذاتي المحدد في تكوين JSON.

بدءا من الإصدار 3.0.3، يمكنك أيضا تعيين موقع ملف التشخيص الذاتي باستخدام متغير APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_FILE_PATHالبيئة . ثم يأخذ الأسبقية على مسار ملف التشخيص الذاتي المحدد في تكوين JSON.

مثال على ذلك

يوضح هذا المثال كيف يبدو ملف التكوين مع مكونات متعددة. تكوين خيارات محددة استنادا إلى احتياجاتك.

{
  "connectionString": "...",
  "role": {
    "name": "my cloud role name"
  },
  "sampling": {
    "percentage": 100
  },
  "jmxMetrics": [
  ],
  "customDimensions": {
  },
  "instrumentation": {
    "logging": {
      "level": "INFO"
    },
    "micrometer": {
      "enabled": true
    }
  },
  "proxy": {
  },
  "preview": {
    "processors": [
    ]
  },
  "selfDiagnostics": {
    "destination": "file+console",
    "level": "INFO",
    "file": {
      "path": "applicationinsights.log",
      "maxSizeMb": 5,
      "maxHistory": 1
    }
  }
}