Micrometer gebruiken met Azure-toepassing Insights Java SDK (niet aanbevolen)

Waarschuwing

Dit document is van toepassing Application Insights Java 2.x, wat niet meer wordt aanbevolen.

Documentatie voor de nieuwste versie vindt u op Application Insights Java 3.x.

Met micrometertoepassingsbewaking worden metrische gegevens gemeten voor toepassingscode op basis van JVM en kunt u de gegevens exporteren naar uw favoriete bewakingssystemen. In dit artikel leert u hoe u Micrometer gebruikt met Application Insights voor zowel Spring Boot als niet-Spring Boot toepassingen.

Met Spring Boot 1,5 x

Voeg de volgende afhankelijkheden toe aan uw pom.xml of build.gradle-bestand:

Stappen

  1. Werk het pom.xml van uw Spring Boot bij en voeg de volgende afhankelijkheden toe:

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>applicationinsights-spring-boot-starter</artifactId>
        <version>2.5.0</version>
    </dependency>
    
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-spring-legacy</artifactId>
        <version>1.1.0</version>
    </dependency>
    
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-azure-monitor</artifactId>
        <version>1.1.0</version>
    </dependency>
    
    
  2. Werk het bestand application.properties of yml bij met de Application Insights Instrumentation-sleutel met behulp van de volgende eigenschap:

    azure.application-insights.instrumentation-key=<your-instrumentation-key-here>

  3. Uw toepassing bouwen en uitvoeren

  4. Met de bovenstaande informatie kunt u werken met vooraf geaggregeerde metrische gegevens die automatisch worden verzameld om Azure Monitor. Voor meer informatie over het afstemmen van Application Insights Spring Boot starter raadpleegt u het leesmij-artikel op GitHub.

Spring 2.x gebruiken

Voeg de volgende afhankelijkheden toe aan uw pom.xml of build.gradle-bestand:

Stappen:

  1. Werk het pom.xml van uw Spring Boot bij en voeg er de volgende afhankelijkheid aan toe:

    <dependency> 
          <groupId>com.microsoft.azure</groupId>
          <artifactId>azure-spring-boot-metrics-starter</artifactId>
          <version>2.0.7</version>
    </dependency>
    
  2. Werk het bestand application.properties of yml bij met de Application Insights Instrumentation-sleutel met behulp van de volgende eigenschap:

    azure.application-insights.instrumentation-key=<your-instrumentation-key-here>

  3. Uw toepassing bouwen en uitvoeren

  4. Als het goed is, kunt u met het bovenstaande werken met vooraf geaggregeerde metrische gegevens die automatisch worden verzameld Azure Monitor. Voor meer informatie over het afstemmen van Application Insights Spring Boot starter raadpleegt u het leesmij-artikel op GitHub.

Standaard metrische gegevens:

  • Automatisch geconfigureerde metrische gegevens voor Tomcat, JVM, Logback Metrics, Log4J metrics, Uptime Metrics, Processor Metrics, FileDescriptorMetrics.
  • Als Netflix Hystrix bijvoorbeeld aanwezig is op het klassepad, krijgen we die metrische gegevens ook.
  • De volgende metrische gegevens kunnen beschikbaar zijn door respectievelijke beans toe te voegen.
    • CacheMetrics (MoeteCache, EhCache2, TermijnvaCache, TermijncastCache, JCache)
    • DataBaseTableMetrics
    • SluimerstandMetrics
    • JettyMetrics
    • Metrische gegevens okHttp3
    • Metrische kafka-gegevens

Automatische verzameling van metrische gegevens uitschakelen:

  • Metrische JVM-gegevens:
    • management.metrics.binders.jvm.enabled=false
  • Metrische logboekgegevens:
    • management.metrics.binders.logback.enabled=false
  • Metrische gegevens voor uptime:
    • management.metrics.binders.uptime.enabled=false
  • Metrische processorgegevens:
    • management.metrics.binders.processor.enabled=false
  • FileDescriptorMetrics:
    • management.metrics.binders.files.enabled=false
  • Hystrix Metrics if library on classpath:
    • management.metrics.binders.hystrix.enabled=false
  • AspectJ Metrics if library on classpath:
    • spring.aop.enabled=false

Notitie

Geef de bovenstaande eigenschappen op in het bestand application.properties of application.yml van uw Spring Boot toepassing

Micrometer gebruiken met niet-Spring Boot webtoepassingen

Voeg de volgende afhankelijkheden toe aan pom.xml bestand build.gradle:

Stappen:

  1. Voeg de volgende afhankelijkheden toe aan pom.xml of build.gradle-bestand:

        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-azure-monitor</artifactId>
            <version>1.1.0</version>
        </dependency>
    
        <dependency>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>applicationinsights-web-auto</artifactId>
            <version>2.5.0</version>
        </dependency>
    
  2. Plaats ApplicationInsights.xml het bestand in de map resources:

    <?xml version="1.0" encoding="utf-8"?>
    <ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">
    
       <!-- The key from the portal: -->
       <InstrumentationKey>** Your instrumentation key **</InstrumentationKey>
    
       <!-- HTTP request component (not required for bare API) -->
       <TelemetryModules>
          <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebRequestTrackingTelemetryModule"/>
          <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebSessionTrackingTelemetryModule"/>
          <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebUserTrackingTelemetryModule"/>
       </TelemetryModules>
    
       <!-- Events correlation (not required for bare API) -->
       <!-- These initializers add context data to each event -->
       <TelemetryInitializers>
          <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationIdTelemetryInitializer"/>
          <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationNameTelemetryInitializer"/>
          <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebSessionTelemetryInitializer"/>
          <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserTelemetryInitializer"/>
          <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserAgentTelemetryInitializer"/>
       </TelemetryInitializers>
    
    </ApplicationInsights>
    
  3. Voorbeeld van Servlet-klasse (er wordt een metrische timer mee metrische gegevens metrische gegevens):

        @WebServlet("/hello")
        public class TimedDemo extends HttpServlet {
    
          private static final long serialVersionUID = -4751096228274971485L;
    
          @Override
          @Timed(value = "hello.world")
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
              throws ServletException, IOException {
    
            response.getWriter().println("Hello World!");
            MeterRegistry registry = (MeterRegistry) getServletContext().getAttribute("AzureMonitorMeterRegistry");
    
        //create new Timer metric
            Timer sampleTimer = registry.timer("timer");
            Stream<Integer> infiniteStream = Stream.iterate(0, i -> i+1);
            infiniteStream.limit(10).forEach(integer -> {
              try {
                Thread.sleep(1000);
                sampleTimer.record(integer, TimeUnit.MILLISECONDS);
              } catch (Exception e) {}
               });
          }
          @Override
          public void init() throws ServletException {
            System.out.println("Servlet " + this.getServletName() + " has started");
          }
          @Override
          public void destroy() {
            System.out.println("Servlet " + this.getServletName() + " has stopped");
          }
    
        }
    
    
  4. Voorbeeldconfiguratieklasse:

         @WebListener
         public class MeterRegistryConfiguration implements ServletContextListener {
    
           @Override
           public void contextInitialized(ServletContextEvent servletContextEvent) {
    
         // Create AzureMonitorMeterRegistry
           private final AzureMonitorConfig config = new AzureMonitorConfig() {
             @Override
             public String get(String key) {
                 return null;
             }
            @Override
               public Duration step() {
                 return Duration.ofSeconds(60);}
    
             @Override
             public boolean enabled() {
                 return false;
             }
         };
    
      MeterRegistry azureMeterRegistry = AzureMonitorMeterRegistry.builder(config);
    
             //set the config to be used elsewhere
             servletContextEvent.getServletContext().setAttribute("AzureMonitorMeterRegistry", azureMeterRegistry);
    
           }
    
           @Override
           public void contextDestroyed(ServletContextEvent servletContextEvent) {
    
           }
         }
    

Raadpleeg de Micrometer-documentatie voor meer informatie over metrische gegevens.

Andere voorbeeldcode voor het maken van verschillende typen metrische gegevens vindt u in de officiëleMicrometer GitHub-opslagplaats.

Aanvullende verzameling metrische gegevens verbinden

SpringBoot/Spring

Maak een bean van de respectieve metrische categorie. Stel bijvoorbeeld dat we metrische gegevens van de Cache van Cache nodig hebben:

    @Bean
    GuavaCacheMetrics guavaCacheMetrics() {
        Return new GuavaCacheMetrics();
    }

Er zijn verschillende metrische gegevens die niet standaard zijn ingeschakeld, maar die op de bovenstaande manier kunnen worden gebonden. Raadpleeg de officiële GitHub-opslagplaats van Micrometervoor een volledige lijst.

Niet-Spring-apps

Voeg de volgende bindingscode toe aan het configuratiebestand:

    New GuavaCacheMetrics().bind(registry);

Volgende stappen

  • Zie de officiële Micrometer-documentatie voor meer informatie over Micrometer.
  • Zie de officiële Spring on Azure-documentatie voor meer informatie over Spring op Azure.