Så här använder du Micrometer med Azure Application Insights Java SDK (rekommenderas inte)

Varning

Det här dokumentet gäller för Application Insights Java 2.x som inte längre rekommenderas.

Dokumentation om den senaste versionen finns på Application Insights Java 3.x.

Övervakning av mikrometerprogram mäter mått för JVM-baserad programkod och gör att du kan exportera data till dina favoritövervakningssystem. Den här artikeln lär dig hur du använder Micrometer med Application Insights för både Spring Boot och icke-Spring Boot program.

Använda Spring Boot 1,5 x

Lägg till följande beroenden i din pom.xml eller build.gradle-fil:

Steg

  1. Uppdatera pom.xml för ditt Spring Boot program och lägg till följande beroenden i den:

    <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. Uppdatera filen application.properties eller yml med Application Insights Instrumentation med hjälp av följande egenskap:

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

  3. Skapa ditt program och kör

  4. Ovanstående bör få dig att komma igång med föraggregeringsmått som samlas in automatiskt för att Azure Monitor. Mer information om hur du finjusterar Application Insights Spring Boot starter finns i readme på GitHub.

Använda Spring 2.x

Lägg till följande beroenden i din pom.xml eller build.gradle-fil:

  • Application Insights Spring-boot-starter 2.1.2 eller högre
  • Azure-spring-boot-metrics-starters 2.0.7 eller senare
  • Application Insights resurs

Steg:

  1. Uppdatera pom.xml för ditt Spring Boot program och lägg till följande beroende i det:

    <dependency> 
          <groupId>com.microsoft.azure</groupId>
          <artifactId>azure-spring-boot-metrics-starter</artifactId>
          <version>2.0.7</version>
    </dependency>
    
  2. Uppdatera filen application.properties eller yml med Application Insights Instrumentation med hjälp av följande egenskap:

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

  3. Skapa ditt program och kör

  4. Ovanstående bör få dig att köra med föraggregeringsmått som samlas in automatiskt för att Azure Monitor. Mer information om hur du finjusterar Application Insights Spring Boot starter finns i readme på GitHub.

Standardmått:

  • Automatiskt konfigurerade mått för Tomcat, JVM, Logback Metrics, Log4J metrics, Uptime Metrics, Processor Metrics, FileDescriptorMetrics.
  • Om Netflix Hystrix till exempel finns på klasssökvägen får vi även dessa mått.
  • Följande mått kan vara tillgängliga genom att lägga till respektive beans.
    • CacheMetrics (Skacache, CacheCache2,SchervaCache, HacastCache, JCache)
    • DataBaseTableMetrics
    • HibernateMetrics
    • JettyMetrics
    • OkHttp3-mått
    • Kafka-mått

Så här inaktiverar du automatisk måttinsamling:

  • JVM-mått:
    • management.metrics.binders.jvm.enabled=false
  • Logback-mått:
    • management.metrics.binders.logback.enabled=false
  • Mått för drifttid:
    • management.metrics.binders.uptime.enabled=false
  • Processormått:
    • management.metrics.binders.processor.enabled=false
  • FileDescriptorMetrics:
    • management.metrics.binders.files.enabled=false
  • Hystrix-mått om biblioteket på classpath:
    • management.metrics.binders.hystrix.enabled=false
  • AspectJ Metrics om biblioteket på classpath:
    • spring.aop.enabled=false

Anteckning

Ange egenskaperna ovan i filen application.properties eller application.yml för ditt Spring Boot program

Använda Micrometer med icke-Spring Boot-webbprogram

Lägg till följande beroenden i din pom.xml eller build.gradle-fil:

Steg:

  1. Lägg till följande beroenden i din pom.xml eller build.gradle-fil:

        <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. Placera ApplicationInsights.xml filen i resursmappen:

    <?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. Exempel på Servlet-klass (sändar ett timermått):

        @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. Exempelkonfigurationsklass:

         @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) {
    
           }
         }
    

Mer information om mått finns i Micrometer-dokumentationen.

Annan exempelkod om hur du skapar olika typer av mått finns på den officiellaMicrometer GitHub-lagringsplatsen.

Så här binder du ytterligare måttsamling

SpringBoot/Spring

Skapa en böna för respektive måttkategori. Säg till exempel att vi behöver Cache metrics för CacheLagring:

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

Det finns flera mått som inte är aktiverade som standard men som kan bindas på ovanstående sätt. En fullständig lista finns på den officiella Micrometer GitHub-lagringsplatsen.

Icke-Spring-appar

Lägg till följande bindningskod i konfigurationsfilen:

    New GuavaCacheMetrics().bind(registry);

Nästa steg