Configuratieopties: Azure Monitor Application Insights voor Java

In dit artikel leest u hoe u Azure Monitor Application Insights voor Java configureert.

Verbinding maken iontekenreeks en rolnaam

Verbinding maken iontekenreeks en rolnaam zijn de meest voorkomende instellingen die u nodig hebt om aan de slag te gaan:

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

Verbinding maken tekenreeks is vereist. De rolnaam is belangrijk wanneer u gegevens van verschillende toepassingen naar dezelfde Application Insights-resource verzendt.

Meer informatie en configuratieopties zijn beschikbaar in de volgende secties.

Pad naar configuratiebestand

Standaard verwacht Application Insights Java 3.x dat het configuratiebestand de naam applicationinsights.jsonheeft en zich in dezelfde map bevindt als applicationinsights-agent-3.5.2.jar.

U kunt uw eigen pad naar het configuratiebestand opgeven met behulp van een van deze twee opties:

  • APPLICATIONINSIGHTS_CONFIGURATION_FILE Omgevingsvariabele
  • applicationinsights.configuration.file Java-systeemeigenschap

Als u een relatief pad opgeeft, wordt dit omgezet ten opzichte van de map waar applicationinsights-agent-3.5.2.jar zich bevindt.

In plaats van een configuratiebestand kunt u ook de volledige inhoud van de JSON-configuratie opgeven via de omgevingsvariabele APPLICATIONINSIGHTS_CONFIGURATION_CONTENT.

Connection string

Verbinding maken tekenreeks is vereist. U vindt uw verbindingsreeks in uw Application Insights-resource.

Schermopname van een Application Insights-verbindingsreeks.

{
  "connectionString": "..."
}

U kunt de verbindingsreeks ook instellen met behulp van de omgevingsvariabeleAPPLICATIONINSIGHTS_CONNECTION_STRING. Het heeft vervolgens voorrang op de verbindingsreeks die is opgegeven in de JSON-configuratie.

Of u kunt de verbindingsreeks instellen met behulp van de Java-systeemeigenschapapplicationinsights.connection.string. Het heeft ook voorrang op de verbindingsreeks die zijn opgegeven in de JSON-configuratie.

U kunt de verbindingsreeks ook instellen door een bestand op te geven waaruit de verbindingsreeks moet worden geladen.

Als u een relatief pad opgeeft, wordt dit omgezet ten opzichte van de map waar applicationinsights-agent-3.5.2.jar zich bevindt.

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

Het bestand mag alleen de verbindingsreeks en niets anders bevatten.

Als u de verbindingsreeks niet instelt, wordt de Java-agent uitgeschakeld.

Als u meerdere toepassingen hebt geïmplementeerd in dezelfde JVM (Java Virtual Machine) en deze telemetrie wilt verzenden naar verschillende verbindingsreeks s, raadpleegt u Verbinding maken ion string overrides (preview).

Naam van cloudrol

De naam van de cloudrol wordt gebruikt om het onderdeel op de toepassingstoewijzing te labelen.

Als u de naam van de cloudrol wilt instellen:

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

Als de naam van de cloudrol niet is ingesteld, wordt de naam van de Application Insights-resource gebruikt om het onderdeel op de toepassingstoewijzing te labelen.

U kunt ook de naam van de cloudrol instellen met behulp van de omgevingsvariabele APPLICATIONINSIGHTS_ROLE_NAME. Deze heeft vervolgens voorrang op de naam van de cloudrol die is opgegeven in de JSON-configuratie.

U kunt ook de naam van de cloudrol instellen met behulp van de Java-systeemeigenschap applicationinsights.role.name. Het heeft ook voorrang op de naam van de cloudrol die is opgegeven in de JSON-configuratie.

Als u meerdere toepassingen in dezelfde JVM hebt geïmplementeerd en deze telemetrie wilt verzenden naar verschillende cloudrolnamen, raadpleegt u Onderdrukkingen van cloudrollen (preview).

Cloudrolinstantie

Het exemplaar van de cloudrol is standaard ingesteld op de computernaam.

Als u het cloudrolexemplaren wilt instellen op iets anders dan de computernaam:

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

U kunt ook het cloudrolexemplaren instellen met behulp van de omgevingsvariabele APPLICATIONINSIGHTS_ROLE_INSTANCE. Het heeft vervolgens voorrang op het exemplaar van de cloudrol dat is opgegeven in de JSON-configuratie.

U kunt ook het exemplaar van de cloudrol instellen met behulp van de Java-systeemeigenschap applicationinsights.role.instance. Het heeft ook voorrang op het exemplaar van de cloudrol dat is opgegeven in de JSON-configuratie.

Steekproeven

Notitie

Steekproeven kunnen een uitstekende manier zijn om de kosten van Application Insights te verlagen. Zorg ervoor dat u uw samplingconfiguratie op de juiste wijze instelt voor uw use-case.

Steekproeven zijn gebaseerd op aanvraag, wat betekent dat als een aanvraag wordt vastgelegd (steekproef), dus afhankelijkheden, logboeken en uitzonderingen.

Steekproeven zijn ook gebaseerd op tracerings-id om consistente steekproeven te nemen in verschillende services.

Steekproeven zijn alleen van toepassing op logboeken in een aanvraag. Logboeken die zich niet in een aanvraag (bijvoorbeeld opstartlogboeken) bevinden, worden altijd standaard verzameld. Als u deze logboeken wilt samplen, kunt u sampling-onderdrukkingen gebruiken.

Snelheidsbeperkingssampling

Vanaf 3.4.0 is een steekproef met frequentielimiet beschikbaar en is nu de standaardinstelling.

Als er geen steekproeven zijn geconfigureerd, is de standaardinstelling nu een frequentielimiet voor steekproeven die zijn geconfigureerd om maximaal vijf aanvragen per seconde vast te leggen, samen met alle afhankelijkheden en logboeken van deze aanvragen.

Deze configuratie vervangt de vorige standaardwaarde, namelijk het vastleggen van alle aanvragen. Als u nog steeds alle aanvragen wilt vastleggen, gebruikt u steekproeven met vast percentage en stelt u het steekproefpercentage in op 100.

Notitie

De snelheidsbeperkingsampling is bij benadering omdat intern een vast steekproefpercentage in de loop van de tijd moet worden aangepast om nauwkeurige itemaantallen voor elke telemetrierecord te verzenden. Intern is de snelheidsbeperking voor steekproeven afgestemd om zich snel (0,1 seconden) aan nieuwe toepassingsbelastingen aan te passen. Daarom moet u de geconfigureerde snelheid niet veel of heel lang niet overschrijden.

In dit voorbeeld ziet u hoe u de steekproef instelt om maximaal (ongeveer) één aanvraag per seconde vast te leggen:

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

De requestsPerSecond waarde kan een decimaal getal zijn, zodat u deze kunt configureren voor het vastleggen van minder dan één aanvraag per seconde als u wilt. Een waarde van 0.5 means legt bijvoorbeeld elke 2 seconden maximaal één aanvraag vast.

U kunt ook het steekproefpercentage instellen met behulp van de omgevingsvariabele APPLICATIONINSIGHTS_SAMPLING_REQUESTS_PER_SECOND. Deze heeft vervolgens voorrang op de frequentielimiet die is opgegeven in de JSON-configuratie.

Steekproef met vast percentage

In dit voorbeeld ziet u hoe u de steekproef instelt om ongeveer een derde van alle aanvragen vast te leggen:

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

U kunt ook het steekproefpercentage instellen met behulp van de omgevingsvariabele APPLICATIONINSIGHTS_SAMPLING_PERCENTAGE. Het heeft vervolgens voorrang op het steekproefpercentage dat is opgegeven in de JSON-configuratie.

Notitie

Kies voor het steekproefpercentage een percentage dat dicht bij 100/N ligt, waarbij N een geheel getal is. Op dit moment biedt steekproeven geen ondersteuning voor andere waarden.

Overschrijvingen voor steekproeven

Met steekproeven kunt u het standaardsamplingspercentage overschrijven. U kunt bijvoorbeeld:

  • Stel het steekproefpercentage in op 0 of een kleine waarde voor ruisstatuscontroles.
  • Stel het steekproefpercentage in op 0 of een kleine waarde voor aanroepen van ruis.
  • Stel het steekproefpercentage in op 100 voor een belangrijk aanvraagtype. U kunt bijvoorbeeld gebruiken /login , ook al hebt u de standaardsampling geconfigureerd voor iets lagers.

Zie de documentatie over het overschrijven van steekproeven voor meer informatie.

Metrische gegevens over Java Management Extensions

Als u enkele andere metrische gegevens van Java Management Extensions (JMX) wilt verzamelen:

{
  "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"
    }
  ]
}

In het voorgaande configuratievoorbeeld:

  • name is de metrische naam die is toegewezen aan deze JMX-metrische waarde (kan van alles zijn).
  • objectName is de objectnaam van het JMX MBean object dat u wilt verzamelen. Jokerteken sterretje (*) wordt ondersteund.
  • attribute is de kenmerknaam binnen de JMX MBean naam die u wilt verzamelen.

Numerieke en Booleaanse JMX-metrische waarden worden ondersteund. Booleaanse JMX-metrische gegevens worden toegewezen aan 0 onwaar en 1 waar.

Zie de documentatie voor metrische gegevens van JMX voor meer informatie.

Aangepaste dimensies

Als u aangepaste dimensies wilt toevoegen aan al uw telemetriegegevens:

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

U kunt ${...} de waarde lezen uit de opgegeven omgevingsvariabele bij het opstarten.

Notitie

Als u vanaf versie 3.0.2 een aangepaste dimensie met de naam service.versiontoevoegt, wordt de waarde opgeslagen in de application_Version kolom in de tabel Application Insights-logboeken in plaats van als een aangepaste dimensie.

Overgenomen kenmerk (preview)

Vanaf versie 3.2.0 kunt u programmatisch een aangepaste dimensie instellen voor uw aanvraagtelemetrie. Het zorgt voor overname door afhankelijkheid en logboektelemetrie. Alle worden vastgelegd in de context van die aanvraag.

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

En roep vervolgens aan het begin van elke aanvraag het volgende aan:

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

Zie ook: Een aangepaste eigenschap toevoegen aan een span.

Verbinding maken ietekenreeksoverschrijvingen (preview)

Deze functie is in preview, vanaf 3.4.0.

met Verbinding maken ietekenreeksoverschrijvingen kunt u de standaard-verbindingsreeks overschrijven. U kunt bijvoorbeeld:

  • Stel één verbindingsreeks in voor één HTTP-padvoorvoegsel/myapp1.
  • Stel nog een verbindingsreeks in voor een ander HTTP-padvoorvoegsel/myapp2/.
{
  "preview": {
    "connectionStringOverrides": [
      {
        "httpPathPrefix": "/myapp1",
        "connectionString": "..."
      },
      {
        "httpPathPrefix": "/myapp2",
        "connectionString": "..."
      }
    ]
  }
}

Overschrijvingen van cloudrolnamen (preview)

Deze functie is in preview, vanaf 3.3.0.

Met overschrijvingen van cloudrolnamen kunt u de standaardnaam van de cloudrol overschrijven. U kunt bijvoorbeeld:

  • Stel één cloudrolnaam in voor één HTTP-padvoorvoegsel /myapp1.
  • Stel een andere cloudrolnaam in voor een ander HTTP-padvoorvoegsel /myapp2/.
{
  "preview": {
    "roleNameOverrides": [
      {
        "httpPathPrefix": "/myapp1",
        "roleName": "Role A"
      },
      {
        "httpPathPrefix": "/myapp2",
        "roleName": "Role B"
      }
    ]
  }
}

Verbinding maken iontekenreeks die tijdens runtime is geconfigureerd

Als u vanaf versie 3.4.8 de mogelijkheid nodig hebt om de verbindingsreeks tijdens runtime te configureren, voegt u deze eigenschap toe aan uw json-configuratie:

{
  "connectionStringConfiguredAtRuntime": true
}

Toevoegen applicationinsights-core aan uw toepassing:

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

Gebruik de statische configure(String) methode in de klasse com.microsoft.applicationinsights.connectionstring.ConnectionString.

Notitie

Alle telemetriegegevens die worden vastgelegd voordat u de verbindingsreeks configureert, worden verwijderd, dus u kunt deze het beste zo vroeg mogelijk configureren tijdens het opstarten van uw toepassing.

Autocollect InProc-afhankelijkheden (preview)

Als u vanaf versie 3.2.0 controller 'InProc'-afhankelijkheden wilt vastleggen, gebruikt u de volgende configuratie:

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

Browser-SDK-laadprogramma (preview)

Deze functie injecteert automatisch het browser-SDK-laadprogramma in de HTML-pagina's van uw toepassing, inclusief het configureren van de juiste Verbinding maken iontekenreeks.

Wanneer uw Java-toepassing bijvoorbeeld een antwoord retourneert, zoals:

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

Deze wordt automatisch gewijzigd om terug te keren:

<!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>

Het script is bedoeld om klanten te helpen de webgebruikersgegevens bij te houden en de verzamelde telemetrie aan de serverzijde terug te sturen naar de Azure-portal van gebruikers. Details vindt u in ApplicationInsights-JS.

Als u deze functie wilt inschakelen, voegt u de onderstaande configuratieoptie toe:

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

Telemetrieprocessors (preview)

U kunt telemetrieprocessors gebruiken om regels te configureren die worden toegepast op telemetriegegevens voor aanvragen, afhankelijkheid en tracering. U kunt bijvoorbeeld:

  • Gevoelige gegevens maskeren.
  • Aangepaste dimensies voorwaardelijk toevoegen.
  • Werk de spannaam bij, die wordt gebruikt voor het aggregeren van vergelijkbare telemetrie in Azure Portal.
  • Verwijder specifieke spankenmerken om de opnamekosten te beheren.

Zie de documentatie van de telemetrieprocessor voor meer informatie.

Notitie

Als u specifieke (hele) periodes wilt verwijderen voor het beheren van opnamekosten, raadpleegt u Sampling-onderdrukkingen.

Aangepaste instrumentatie (preview)

Vanaf verion 3.3.1 kunt u spans vastleggen voor een methode in uw toepassing:

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

Automatisch opgehaalde logboekregistratie

Log4j, Logback, JBoss Logging en java.util.logging worden automatisch ingedeeld. Logboekregistratie die via deze frameworks voor logboekregistratie wordt uitgevoerd, wordt automatisch opgehaald.

Logboekregistratie wordt alleen vastgelegd als deze:

  • Voldoet aan het geconfigureerde niveau voor het framework voor logboekregistratie.
  • Voldoet ook aan het geconfigureerde niveau voor Application Insights.

Als uw framework voor logboekregistratie bijvoorbeeld is geconfigureerd voor logboekregistratie WARN (en u hebt het geconfigureerd zoals eerder beschreven) vanuit het pakketcom.example, en Application Insights is geconfigureerd om vast te leggen INFO (en u hebt geconfigureerd zoals beschreven), legt Application Insights alleen (en ernstiger) van het pakket com.examplevast WARN .

Het standaardniveau dat is geconfigureerd voor Application Insights is INFO. Als u dit niveau wilt wijzigen:

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

U kunt het niveau ook instellen met behulp van de omgevingsvariabele APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL. Het heeft vervolgens voorrang op het niveau dat is opgegeven in de JSON-configuratie.

U kunt deze geldige level waarden gebruiken om op te geven in het applicationinsights.json bestand. De tabel laat zien hoe ze overeenkomen met logboekniveaus in verschillende frameworks voor logboekregistratie.

Niveau Log4j Logback JBoss JUL
UIT UIT UIT UIT UIT
FATALE FATALE FOUT FATALE ERNSTIGE
FOUT (of ERNSTIG) FOUT FOUT FOUT ERNSTIGE
WAARSCHUWEN (of WAARSCHUWING) WAARSCHUWEN WAARSCHUWEN WAARSCHUWEN WARNING
INFO INFO INFO INFO INFO
CONFIG DEBUG DEBUG DEBUG CONFIG
FOUTEN OPSPOREN (of FIJN) DEBUG DEBUG DEBUG FIJN
FIJNERE DEBUG DEBUG DEBUG FIJNERE
TRACEREN (of BESTE) TRACEREN TRACEREN TRACEREN BESTE
ALL ALL ALL ALL ALL

Notitie

Als een uitzonderingsobject wordt doorgegeven aan de logboekregistratie, wordt het logboekbericht (en details van uitzonderingsobject) weergegeven in Azure Portal onder de exceptions tabel in plaats van de traces tabel. Als u de logboekberichten in zowel de traces tabellen exceptions als de logboeken wilt zien, kunt u een Logboekquery (Kusto) schrijven om ze te samenvoegen. Voorbeeld:

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

Logboekmarkeringen (preview)

Vanaf 3.4.2 kunt u de logboekmarkeringen vastleggen voor Logback en Log4j 2:

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

Andere logboekkenmerken voor Logback (preview)

Vanaf 3.4.3 kunt u vastleggen FileName, ClassName, MethodNameen LineNumber, voor Logback:

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

Waarschuwing

Het vastleggen van codekenmerken kan een prestatieoverhead toevoegen.

Niveau van logboekregistratie als een aangepaste dimensie

Vanaf versie 3.3.0 wordt LoggingLevel niet standaard vastgelegd als onderdeel van de aangepaste traceringendimensie, omdat die gegevens al in het SeverityLevel veld zijn vastgelegd.

Indien nodig kunt u het vorige gedrag tijdelijk opnieuw inschakelen:

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

Metrische gegevens van automatische micrometer (inclusief metrische gegevens van Spring Boot Actuator)

Als uw toepassing gebruikmaakt van Micrometer, worden metrische gegevens die naar het globale micrometerregister worden verzonden, automatisch opgehaald.

Als uw toepassing gebruikmaakt van Spring Boot Actuator, worden metrische gegevens die zijn geconfigureerd door Spring Boot Actuator ook automatisch opgehaald.

Aangepaste metrische gegevens verzenden met behulp van micrometer:

  1. Voeg Micrometer toe aan uw toepassing, zoals wordt weergegeven in het volgende voorbeeld.

    <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-core</artifactId>
      <version>1.6.1</version>
    </dependency>
    
  2. Gebruik het globale micrometerregister om een meter te maken, zoals wordt weergegeven in het volgende voorbeeld.

    static final Counter counter = Metrics.counter("test.counter");
    
  3. Gebruik de teller om metrische gegevens vast te leggen met behulp van de volgende opdracht.

    counter.increment();
    
  4. De metrische gegevens worden opgenomen in de customMetrics-tabel , met tags die in de customDimensions kolom zijn vastgelegd. U kunt de metrische gegevens ook bekijken in de Explorer voor metrische gegevens onder de Log-based metrics naamruimte voor metrische gegevens.

    Notitie

    Application Insights Java vervangt alle niet-alfanumerieke tekens (behalve streepjes) in de metrische naam van de micrometer door onderstrepingstekens. Als gevolg hiervan worden de voorgaande test.counter metrische gegevens weergegeven als test_counter.

Automatische verzameling van metrische gegevens van Micrometer en Spring Boot Actuator uitschakelen:

Notitie

Aangepaste metrische gegevens worden afzonderlijk gefactureerd en kunnen extra kosten genereren. Controleer de prijsinformatie. Als u de metrische gegevens van Micrometer en Spring Boot Actuator wilt uitschakelen, voegt u de volgende configuratie toe aan uw configuratiebestand.

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

Verbinding maken iviteit van querymaskering in Java Database

Letterlijke waarden in JDBC-query's (Java Database Verbinding maken ivity) worden standaard gemaskeerd om te voorkomen dat gevoelige gegevens per ongeluk worden vastgelegd.

Vanaf 3.4.0 kan dit gedrag worden uitgeschakeld. Voorbeeld:

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

Mongo-querymaskering

Letterlijke waarden in Mongo-query's worden standaard gemaskeerd om te voorkomen dat gevoelige gegevens per ongeluk worden vastgelegd.

Vanaf 3.4.0 kan dit gedrag worden uitgeschakeld. Voorbeeld:

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

HTTP-kopteksten

Vanaf versie 3.3.0 kunt u aanvraag- en antwoordheaders vastleggen op uw servertelemetrie (aanvraag):

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

De headernamen zijn niet hoofdlettergevoelig.

De voorgaande voorbeelden worden vastgelegd onder de eigenschapsnamen http.request.header.my_header_a en http.response.header.my_header_b.

Op dezelfde manier kunt u aanvraag- en antwoordheaders vastleggen op uw clienttelemetrie (afhankelijkheid):

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

Ook hier zijn de headernamen niet hoofdlettergevoelig. De voorgaande voorbeelden worden vastgelegd onder de eigenschapsnamen http.request.header.my_header_c en http.response.header.my_header_d.

HTTP-server 4xx-antwoordcodes

Http-serveraanvragen die resulteren in 4xx-antwoordcodes, worden standaard vastgelegd als fouten.

Vanaf versie 3.3.0 kunt u dit gedrag wijzigen om ze vast te leggen als succes:

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

Specifieke automatisch opgehaalde telemetrie onderdrukken

Vanaf versie 3.0.3 kan specifieke automatisch opgehaalde telemetrie worden onderdrukt met behulp van deze configuratieopties:

{
  "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
    }
  }
}

U kunt deze instrumentaties ook onderdrukken door deze omgevingsvariabelen in te stellen op 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

Deze variabelen hebben vervolgens voorrang op de ingeschakelde variabelen die zijn opgegeven in de JSON-configuratie.

Preview-instrumentaties

Vanaf versie 3.2.0 kunt u de volgende preview-instrumentaties inschakelen:

{
  "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
      }
    }
  }
}

Notitie

Akka-instrumentatie is beschikbaar vanaf versie 3.2.2. Vertx HTTP Library-instrumentatie is beschikbaar vanaf versie 3.3.0.

Metrische interval

Standaard worden metrische gegevens elke 60 seconden vastgelegd.

Vanaf versie 3.0.3 kunt u dit interval wijzigen:

{
  "metricIntervalSeconds": 300
}

Vanaf 3.4.9 GA kunt u de metricIntervalSeconds variabele ook instellen met behulp van de omgevingsvariabele APPLICATIONINSIGHTS_METRIC_INTERVAL_SECONDS. Het heeft vervolgens voorrang op de metricIntervalSeconds opgegeven in de JSON-configuratie.

De instelling is van toepassing op de volgende metrische gegevens:

Hartslag

Application Insights Java 3.x verzendt standaard elke 15 minuten een heartbeat-meetwaarde. Als u de metrische heartbeat gebruikt om waarschuwingen te activeren, kunt u de frequentie van deze heartbeat verhogen:

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

Notitie

U kunt het interval niet verhogen naar langer dan 15 minuten, omdat de heartbeatgegevens ook worden gebruikt om het gebruik van Application Insights bij te houden.

Verificatie

Notitie

De verificatiefunctie is algemeen beschikbaar sinds versie 3.4.17.

U kunt verificatie gebruiken om de agent te configureren voor het genereren van tokenreferenties die vereist zijn voor Microsoft Entra-verificatie. Zie de verificatiedocumentatie voor meer informatie.

HTTP-proxy

Als uw toepassing zich achter een firewall bevindt en geen rechtstreekse verbinding kan maken met Application Insights, raadpleegt u IP-adressen die worden gebruikt door Application Insights.

U kunt dit probleem omzeilen door Application Insights Java 3.x te configureren voor het gebruik van een HTTP-proxy.

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

U kunt ook de HTTP-proxy instellen met behulp van de omgevingsvariabele APPLICATIONINSIGHTS_PROXY, die de indeling https://<host>:<port>gebruikt. Deze heeft vervolgens voorrang op de proxy die is opgegeven in de JSON-configuratie.

Application Insights Java 3.x respecteert ook de globale https.proxyHost en https.proxyPort systeemeigenschappen als deze zijn ingesteld en http.nonProxyHosts, indien nodig.

Herstel na opnamefouten

Wanneer het verzenden van telemetrie naar de Application Insights-service mislukt, slaat Application Insights Java 3.x de telemetrie op de schijf op en blijft het opnieuw proberen vanaf de schijf.

De standaardlimiet voor schijfpersistentie is 50 Mb. Als u een hoog telemetrievolume hebt of als u langer netwerk- of opnameservicestoringen wilt herstellen, kunt u deze limiet verhogen vanaf versie 3.3.0:

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

Zelfdiagnose

'Zelfdiagnose' verwijst naar interne logboekregistratie van Application Insights Java 3.x. Deze functionaliteit kan nuttig zijn voor het opsporen en diagnosticeren van problemen met Application Insights zelf.

Application Insights Java 3.x-logboeken op niveau INFO voor zowel het bestand applicationinsights.log als de console, die overeenkomen met deze configuratie, zijn standaard:

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

In het voorgaande configuratievoorbeeld:

  • levelkan een van OFF, , ERRORWARN, , INFOof DEBUG.TRACE
  • path kan een absoluut of relatief pad zijn. Relatieve paden worden omgezet in de map waar applicationinsights-agent-3.5.2.jar zich bevindt.

Vanaf versie 3.0.2 kunt u de zelfdiagnose level ook instellen met behulp van de omgevingsvariabele APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL. Het heeft vervolgens voorrang op het niveau van zelfdiagnose dat is opgegeven in de JSON-configuratie.

Vanaf versie 3.0.3 kunt u ook de locatie van het zelfdiagnosebestand instellen met behulp van de omgevingsvariabele APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_FILE_PATH. Het heeft vervolgens voorrang op het pad naar het zelfdiagnosebestand dat is opgegeven in de JSON-configuratie.

Een voorbeeld

In dit voorbeeld ziet u hoe een configuratiebestand eruitziet met meerdere onderdelen. Configureer specifieke opties op basis van uw behoeften.

{
  "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
    }
  }
}