استخدام Azure Monitor Application Insights مع Spring Boot

إشعار

باستخدام تطبيقات الصور الأصلية ل Spring Boot، يمكنك استخدام هذا المشروع.

هناك خياران لتمكين Application Insights Java مع Spring Boot: وسيطة الجهاز الظاهري Java (JVM) وبشكل برمجي.

التمكين باستخدام وسيطة JVM

إضافة JVM arg -javaagent:"path/to/applicationinsights-agent-3.5.2.jar" في مكان ما قبل -jar، على سبيل المثال:

java -javaagent:"path/to/applicationinsights-agent-3.5.2.jar" -jar <myapp.jar>

Spring Boot عبر نقطة الإدخال Docker

راجع الوثائق المتعلقة بالحاويات.

التكوين

راجع خيارات التكوين.

التمكين برمجيا

لتمكين Application Insights Java برمجيا، يجب إضافة التبعية التالية:

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

واستدعاء attach() أسلوب com.microsoft.applicationinsights.attach.ApplicationInsights الفئة الموجودة في السطر الأول من الأسلوب الخاص بك main() .

تحذير

يجب أن يكون استدعاء في بداية main الأسلوب.

تحذير

JRE غير مدعوم.

تحذير

يجب أن يكون الدليل المؤقت لنظام التشغيل قابلا للكتابة.

مثال:

@SpringBootApplication
public class SpringBootApp {

  public static void main(String[] args) {
    ApplicationInsights.attach();
    SpringApplication.run(SpringBootApp.class, args);
  }
}

التكوين

يدعم التمكين البرمجي جميع خيارات التكوين نفسها مثل تمكين وسيطة JVM، مع الاختلافات الموضحة في الأقسام التالية.

موقع ملف التكوين

بشكل افتراضي، عند تمكين Application Insights Java برمجيا، تتم قراءة ملف applicationinsights.json التكوين من classpath (src/main/resources، src/test/resources).

من 3.4.3، يمكنك تكوين اسم ملف JSON في مسار الفئة باستخدام applicationinsights.runtime-attach.configuration.classpath.file خاصية النظام. على سبيل المثال، باستخدام -Dapplicationinsights.runtime-attach.configuration.classpath.file=applicationinsights-dev.json، يستخدم applicationinsights-dev.json Application Insights الملف للتكوين. لتكوين ملف آخر برمجيا في classpath:

public static void main(String[] args) {
    System.setProperty("applicationinsights.runtime-attach.configuration.classpath.file", "applicationinsights-dev.json");
    ApplicationInsights.attach();
    SpringApplication.run(PetClinicApplication.class, args);
}

إشعار

application.properties لا يتم دعم ملفات Spring أو application.yaml كمصادر لتكوين Application Insights Java.

راجع خيارات تكوين مسار ملف التكوين لتغيير موقع ملف خارج مسار الفئة.

لتكوين ملف برمجيا خارج مسار الفئة:

public static void main(String[] args) {
    System.setProperty("applicationinsights.configuration.file", "{path}/applicationinsights-dev.json");
    ApplicationInsights.attach();
    SpringApplication.run(PetClinicApplication.class, args);
}

تكوين سلسلة الاتصال برمجيا

أولا، أضف التبعية applicationinsights-core :

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

ثم قم باستدعاء ConnectionString.configure الأسلوب بعد ApplicationInsights.attach():

public static void main(String[] args) {
    System.setProperty("applicationinsights.configuration.file", "{path}/applicationinsights-dev.json");
    ApplicationInsights.attach();
    SpringApplication.run(PetClinicApplication.class, args);
}

بدلا من ذلك، قم باستدعاء ConnectionString.configure الأسلوب من مكون Spring.

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

{
  "connectionStringConfiguredAtRuntime": true
}

موقع ملف سجل التشخيص الذاتي

بشكل افتراضي، عند تمكين Application Insights Java برمجيا، يقع الملف الذي applicationinsights.log يحتوي على سجلات العامل في الدليل حيث يتم تشغيل JVM (دليل المستخدم).

لمعرفة كيفية تغيير هذا الموقع، راجع خيارات تكوين التشخيص الذاتي.