Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Upozornění
Tento článek se týká Application Insights Java 2.x, který se už nedoporučuje.
Dokumentaci k nejnovější verzi najdete na webu Application Insights Java 3.x.
V tomto článku se dozvíte, jak používat Application Insights Java 2.x. V tomto článku se dozvíte, jak:
- Začněte a zjistěte, jak instrumentovat požadavky, sledovat závislosti, shromažďovat čítače výkonu, diagnostikovat problémy s výkonem a výjimky a psát kód ke sledování toho, co uživatelé s vaší aplikací dělají.
- Odešlete protokoly trasování do služby Application Insights a prozkoumejte je pomocí portálu této služby.
- Monitorujte závislosti, zachycené výjimky a doby provádění metod ve webových aplikacích v Javě.
- Filtrování telemetrie ve webové aplikaci v Javě
- Prozkoumejte metriky výkonu systému Linux v Application Insights pomocí
collectd. - Měření metrik pro kód aplikace založený na prostředí Java Virtual Machine (JVM) Data můžete exportovat do oblíbených monitorovacích systémů pomocí monitorování aplikací Micrometer.
Poznámka:
Podpora příjmu instrumentačních klíčů skončí 31. března 2025. Příjem klíčů instrumentace bude dál fungovat, ale už nebudeme poskytovat aktualizace ani podporu pro tuto funkci. Přechod na připojovací řetězec, abyste mohli využívat nové funkce.
Začínáme s Application Insights ve webovém projektu Java
V této části použijete sadu Application Insights SDK k instrumentaci požadavků, sledování závislostí, shromažďování čítačů výkonu, diagnostice problémů s výkonem a výjimek a psaní kódu ke sledování toho, co uživatelé s vaší aplikací dělají.
Application Insights je rozšiřitelná analytická služba pro webové vývojáře, která pomáhá pochopit výkon a využití živé aplikace. Application Insights podporuje aplikace Java spuštěné v systémech Linux, Unix nebo Windows.
Požadavky
Potřebujete:
- Účet Azure s aktivním předplatným. Účet si můžete vytvořit zdarma.
- Funkční aplikace v Javě.
Získání instrumentačního klíče Application Insights
Přihlaste se do Azure Portalu.
Na webu Azure Portal vytvořte prostředek Application Insights. Nastavte typ aplikace na webovou aplikaci Java.
Vyhledejte instrumentační klíč nového prostředku. Tento klíč budete muset za chvíli vložit do projektu kódu.
Přidání sady Application Insights SDK pro Javu do projektu
Zvolte typ projektu.
Pokud je projekt už nastavený tak, aby používal Maven pro sestavení, sloučte následující kód do souborupom.xml . Potom aktualizujte závislosti projektu, aby se stáhly binární soubory.
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-web-auto</artifactId>
<!-- or applicationinsights-web for manual web filter registration -->
<!-- or applicationinsights-core for bare API -->
<version>2.6.4</version>
</dependency>
</dependencies>
Nejčastější dotazy
Jaký je vztah mezi komponentami
-web-auto,-weba-corekomponentami?-
applicationinsights-web-autoposkytuje metriky, které sledují počty požadavků HTTP servlet a dobu odezvy tím, že automaticky zaregistruje filtr servletu Application Insights za běhu. -
applicationinsights-webposkytuje také metriky, které sledují počty požadavků HTTP servletu a doby odezvy. Vyžaduje se ale ruční registrace filtru servletu Application Insights ve vaší aplikaci. -
applicationinsights-coreposkytuje úplné rozhraní API, například pokud vaše aplikace není založená na servletu.
-
Jak mám sadu SDK aktualizovat na nejnovější verzi?
- Od listopadu 2020 doporučujeme pro monitorování aplikací v Javě používat Application Insights Java 3.x. Další informace o tom, jak začít, najdete v tématu Application Insights Java 3.x.
Přidání souboru ApplicationInsights.xml
Přidejte ApplicationInsights.xml do složky zdrojů v projektu nebo se ujistěte, že je přidaná do cesty třídy nasazení projektu. Zkopírujte do něj následující kód XML.
Nahraďte instrumentační klíč klíčem, který jste získali z webu Azure Portal.
<?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>
Volitelně může být konfigurační soubor v libovolném umístění přístupném pro vaši aplikaci. Vlastnost -Dapplicationinsights.configurationDirectory systému určuje adresář, který obsahuje ApplicationInsights.xml. Například konfigurační soubor umístěný v E:\myconfigs\appinsights\ApplicationInsights.xml by byl nakonfigurován s vlastností -Dapplicationinsights.configurationDirectory="E:\myconfigs\appinsights".
- Instrumentační klíč se odešle spolu s každou položkou telemetrie a umožní Application Insights zobrazit ho ve vašem zdroji.
- Komponenta požadavku HTTP je volitelná. Automaticky odesílá telemetrii o požadavcích a době odezvy na portál.
- Korelace událostí je doplněním komponenty požadavku HTTP. Přiřadí identifikátor každému požadavku přijatému serverem. Potom tento identifikátor přidá jako vlastnost ke každé položce telemetrie jako vlastnost
Operation.Id. Umožňuje korelovat telemetrii přidruženou k jednotlivým požadavkem nastavením filtru ve vyhledávání diagnostiky.
Alternativní způsoby nastavení instrumentačního klíče
Sada Application Insights SDK hledá klíč v tomto pořadí:
- Systémová vlastnost: -DAPPINSIGHTS_INSTRUMENTATIONKEY=your_ikey
- Proměnná prostředí: APPINSIGHTS_INSTRUMENTATIONKEY
- Konfigurační soubor: ApplicationInsights.xml
Můžete ho také nastavit v kódu:
String instrumentationKey = "00000000-0000-0000-0000-000000000000";
if (instrumentationKey != null)
{
TelemetryConfiguration.getActive().setInstrumentationKey(instrumentationKey);
}
Přidání agenta
Nainstalujte agenta Javy , který zachytí odchozí volání HTTP, dotazy JDBC, protokolování aplikace a lepší pojmenování operací.
Spuštění aplikace
Buď ho spusťte v režimu ladění na vývojovém počítači, nebo ho publikujte na serveru.
Zobrazení telemetrie v Application Insights
Vraťte se k prostředku Application Insights na webu Azure Portal.
Data požadavků HTTP se zobrazí v podokně přehledu. Pokud tam není, počkejte několik sekund a pak vyberte Aktualizovat.
Přečtěte si další informace o metrikách.
Kliknutím na libovolný graf zobrazíte podrobnější agregované metriky.
Instance dat
Kliknutím na konkrétní typ požadavku zobrazíte jednotlivé instance.
Log Analytics: Výkonný dotazovací jazyk
Při shromažďování dalších dat můžete spouštět dotazy, které agregují data a vyhledá jednotlivé instance. Log Analytics je výkonný nástroj pro pochopení výkonu a využití a pro diagnostické účely.
Instalace aplikace na server
Teď publikujte aplikaci na server, nechte ji používat a sledujte, jak se telemetrická data zobrazují na portálu.
Ujistěte se, že brána firewall vaší aplikaci umožňuje odesílat telemetrii na tyto porty:
- dc.services.visualstudio.com:443
- f5.services.visualstudio.com:443
Pokud musí být odchozí provoz směrován přes bránu firewall, definujte vlastnosti
http.proxyHostsystému ahttp.proxyPort.Na serverech s Windows nainstalujte:
Microsoft Visual C++ Redistributable
Tato komponenta umožňuje čítače výkonu.
Azure App Service, Azure Kubernetes Service, konfigurace virtuálních počítačů
Nejlepším a nejsnadnějším přístupem k monitorování aplikací spuštěných na všech poskytovatelích prostředků Azure je použití Application Insights Java 3.x.
Výjimky a chyby požadavků
Neošetřené výjimky a selhání požadavků se automaticky shromažďují webovým filtrem Application Insights.
Pokud chcete shromažďovat data o jiných výjimkách, můžete do kódu vložit volání trackException().
Monitorování volání metod a externích závislostí
Nainstalujte agenta Java k protokolování zadaných interních metod a volání prostřednictvím JDBC, s daty časování a pro automatické pojmenování operací.
Distribuované trasování W3C
Sada Application Insights Java SDK teď podporuje distribuované trasování W3C.
Konfigurace příchozí sady SDK je podrobněji vysvětlena v korelaci telemetrie v Application Insights.
Konfigurace odchozí sady SDK je definována v souboruAI-Agent.xml .
Čítače výkonu
Výběrem možnosti Prozkoumat>Metriky zobrazíte rozsah čítačů výkonu.
Přizpůsobení kolekce čítačů výkonu
Pokud chcete zakázat shromažďování standardní sady čítačů výkonu, přidejte do kořenového uzlu souboru ApplicationInsights.xml následující kód:
<PerformanceCounters>
<UseBuiltIn>False</UseBuiltIn>
</PerformanceCounters>
Shromažďování dalších čítačů výkonu
Můžete zadat více čítačů výkonu, které se mají shromažďovat.
Čítače JMX (poskytované Java virtuálním strojem)
<PerformanceCounters>
<Jmx>
<Add objectName="java.lang:type=ClassLoading" attribute="TotalLoadedClassCount" displayName="Loaded Class Count"/>
<Add objectName="java.lang:type=Memory" attribute="HeapMemoryUsage.used" displayName="Heap Memory Usage-used" type="composite"/>
</Jmx>
</PerformanceCounters>
-
displayName: Název zobrazený na portálu Application Insights. -
objectName: Název objektu JMX. -
attribute: Atribut názvu objektu JMX, který se má načíst. -
type(volitelné): Typ atributu objektu JMX:- Výchozí hodnota: Jednoduchý typ, například int nebo long.
-
composite: Data čítače výkonu jsou ve formátuAttribute.Data. -
tabular: Data čítače výkonu jsou ve formátu řádku tabulky.
Čítače výkonu Windows
Každý čítač výkonu Systému Windows je členem kategorie (stejným způsobem jako pole je členem třídy). Kategorie můžou být buď globální, nebo mohou mít číslovaný nebo pojmenovaný výskyt.
<PerformanceCounters>
<Windows>
<Add displayName="Process User Time" categoryName="Process" counterName="%User Time" instanceName="__SELF__" />
<Add displayName="Bytes Printed per Second" categoryName="Print Queue" counterName="Bytes Printed/sec" instanceName="Fax" />
</Windows>
</PerformanceCounters>
-
displayName: Název zobrazený na portálu Application Insights. -
categoryName: Kategorie čítače výkonu (objekt výkonu), ke které je přidružen tento čítač výkonu. -
counterName: Název čítače výkonu. -
instanceName: Název instance kategorie čítače výkonu nebo prázdný řetězec (""), pokud kategorie obsahuje jednu instanci. PokudcategoryNamejeProcessa čítač výkonu, který chcete shromáždit, pochází z aktuálního procesu JVM, na kterém je aplikace spuštěná, zadejte"__SELF__".
Čítače výkonu unixu
Nainstalujte collectd s modulem plug-in Application Insights, abyste získali širokou škálu systémových a síťových dat.
Získání dat uživatelů a dat ze sezení
Teď odesíláte telemetrii z webového serveru. Pokud chcete získat úplný 360stupňový přehled o aplikaci, můžete přidat další monitorování:
- Přidáním telemetrie na webové stránky můžete monitorovat zobrazení stránek a metriky uživatelů.
- Nastavte webové testy , abyste měli jistotu, že vaše aplikace zůstane aktivní a responzivní.
Odešlete vlastní telemetrii
Teď, když jste nainstalovali sadu SDK, můžete pomocí rozhraní API odesílat vlastní telemetrii:
- Sledujte vlastní události a metriky a zjistěte, co uživatelé s vaší aplikací dělají.
- Vyhledejte události a protokoly , které vám pomůžou diagnostikovat problémy.
Webové testy dostupnosti
Application Insights může váš web pravidelně testovat a kontrolovat, jestli je v pořádku a jestli dobře reaguje.
Přečtěte si další informace o nastavení webových testů dostupnosti.
Řešení problémů
Projděte si vyhrazený článek o řešení potíží.
Testování připojení mezi hostitelem vaší aplikace a službou příjmu dat
SDK a agenti Application Insights odesílají telemetrii, aby se ingestovala jako volání REST na naše koncové body pro příjem dat. Připojení z webového serveru nebo hostitelského počítače aplikace ke koncovým bodům služby pro příjem dat můžete otestovat pomocí nezpracovaných klientů REST z příkazů PowerShellu nebo curl. Viz Řešení potíží s chybějící telemetrií aplikací ve službě Azure Monitor Application Insights.
Prozkoumání protokolů trasování v Javě v Application Insights
Pokud pro trasování používáte Logback nebo Log4J (v1.2 nebo v2.0), můžete protokoly trasování odesílat automaticky do Application Insights, kde je můžete prozkoumat a vyhledat.
Návod
Instrumentační klíč Application Insights musíte nastavit jenom jednou pro vaši aplikaci. Pokud používáte architekturu, jako je Java Spring, možná jste klíč zaregistrovali jinde v konfiguraci vaší aplikace.
Použití agenta Application Insights v Javě
Ve výchozím nastavení agent Java Application Insights automaticky zaznamenává protokolování prováděné na WARN úrovni a výše.
Prahovou hodnotu protokolování zachyceného pomocí souboruAI-Agent.xml můžete změnit:
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn>
<Logging threshold="info"/>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
Zachytávání protokolování agenta Java můžete zakázat pomocí souboru AI-Agent.xml :
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn>
<Logging enabled="false"/>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
Alternatives
Místo použití agenta Java můžete postupovat podle těchto pokynů.
Instalace sady Java SDK
Pokud jste to ještě neudělali, postupujte podle pokynů k instalaci sady Application Insights SDK pro Javu.
Přidejte do projektu knihovny pro protokolování
Zvolte vhodný způsob pro váš projekt.
Znalec
Pokud je váš projekt už nastavený tak, aby používal Maven pro sestavení, sloučte jeden z následujících fragmentů kódu do souborupom.xml . Potom aktualizujte závislosti projektu, aby se stáhly binární soubory.
Zpětný protokol
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-logback</artifactId>
<version>[2.0,)</version>
</dependency>
</dependencies>
Log4J v2.0
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-log4j2</artifactId>
<version>[2.0,)</version>
</dependency>
</dependencies>
Log4J v1.2
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-log4j1_2</artifactId>
<version>[2.0,)</version>
</dependency>
</dependencies>
Gradle
Pokud je projekt už nastavený tak, aby používal Gradle pro sestavení, přidejte do skupiny v souboru build.gradle jeden z následujících řádků. Potom aktualizujte závislosti projektu, aby se stáhly binární soubory.
Zpětný protokol
compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-logback', version: '2.0.+'
Log4J v2.0
compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-log4j2', version: '2.0.+'
Log4J v1.2
compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-log4j1_2', version: '2.0.+'
Použijte odkaz JAR
Postupujte podle pokynů pro ruční instalaci sady Application Insights Java SDK a stažení souboru JAR. Na centrální stránce Maven vyberte jar odkaz v části pro stažení příslušného appenderu. Přidejte staženou knihovnu appenderu ve formátu JAR do projektu.
| Logger | Stáhnout | Knihovna |
|---|---|---|
| Zpětný protokol | Logback appender JAR | applicationinsights-logging-logback |
| Log4J v2.0 | Soubor Jar doplňovacího nástroje Log4J v2 | applicationinsights-logging-log4j2 |
| Log4j v1.2 | Log4J v1.2 appender Jar | applicationinsights-logging-log4j1_2 |
Přidání appenderu do rozhraní protokolování
Pokud chcete začít získávat logové stopy, integrujte příslušný úryvek kódu do konfiguračního souboru Logback nebo Log4J.
Zpětný protokol
<appender name="aiAppender"
class="com.microsoft.applicationinsights.logback.ApplicationInsightsAppender">
<instrumentationKey>[APPLICATION_INSIGHTS_KEY]</instrumentationKey>
</appender>
<root level="trace">
<appender-ref ref="aiAppender" />
</root>
Log4J v2.0
<Configuration packages="com.microsoft.applicationinsights.log4j.v2">
<Appenders>
<ApplicationInsightsAppender name="aiAppender" instrumentationKey="[APPLICATION_INSIGHTS_KEY]" />
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="aiAppender"/>
</Root>
</Loggers>
</Configuration>
Log4J v1.2
<appender name="aiAppender"
class="com.microsoft.applicationinsights.log4j.v1_2.ApplicationInsightsAppender">
<param name="instrumentationKey" value="[APPLICATION_INSIGHTS_KEY]" />
</appender>
<root>
<priority value ="trace" />
<appender-ref ref="aiAppender" />
</root>
Na přidávací nástroje Application Insights může odkazovat jakýkoli nakonfigurovaný protokolovací nástroj, nikoli nutně kořenový protokolovací nástroj, jak je znázorněno v předchozích ukázkách kódu.
Prozkoumejte své trasování na portálu Application Insights
Teď, když jste projekt nakonfigurovali tak, aby odesílal trasování do Application Insights, můžete tyto trasování zobrazit a prohledávat na portálu Application Insights v podokně Hledání .
Výjimky odeslané prostřednictvím loggerů se zobrazí na portálu jako telemetrie Exception.
Monitorování závislostí, zachycených výjimek a časů provádění metod ve webových aplikacích v Javě
Pokud jste webovou aplikaci v Javě instrumentovali pomocí sady Application Insights SDK, můžete pomocí agenta Javy získat podrobnější přehledy bez jakýchkoli změn kódu:
Závislosti: Data o voláních, která vaše aplikace provádí v jiných komponentách, včetně:
-
Odchozí volání HTTP: Volání přes
Apache HttpClient,OkHttpajava.net.HttpURLConnectionjsou zachyceny. - Volání Redis: Volání provedená prostřednictvím klienta Jedis jsou zachycena.
- Dotazy JDBC: Pro MySQL a PostgreSQL, pokud volání trvá déle než 10 sekund, agent hlásí plán dotazu.
-
Odchozí volání HTTP: Volání přes
Zaznamenávání aplikace: Zaznamenávejte a korelujte protokoly aplikace s požadavky HTTP a dalšími telemetrickými údaji:
- Log4j 1.2
- Log4j2
- Zpětný protokol
Lepší pojmenování operací: Používá se pro agregaci požadavků na portálu.
-
Spring: založené na
@RequestMapping. -
JAX-RS: na základě
@Path.
-
Spring: založené na
Pokud chcete použít agenta Java, nainstalujte ho na svůj server. Vaše webové aplikace musí být instrumentované pomocí sady Application Insights Java SDK.
Instalace agenta Application Insights pro Javu
Na počítači, na kterém běží váš server Java, stáhněte agenta 2.x. Ujistěte se, že verze agenta Java 2.x, který používáte, odpovídá verzi sady Java SDK 2.x Application Insights, kterou používáte.
Upravte spouštěcí skript aplikačního serveru a přidejte následující argument JVM:
-javaagent:<full path to the agent JAR file>Například v Tomcat na počítači s Linuxem:
export JAVA_OPTS="$JAVA_OPTS -javaagent:<full path to agent JAR file>"Restartujte aplikační server.
Konfigurace agenta
Vytvořte soubor s názvem AI-Agent.xml a umístěte ho do stejné složky jako soubor JAR agenta.
Nastavte obsah souboru XML. Upravte následující příklad tak, aby zahrnoval nebo vynechal požadované funkce.
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn enabled="true">
<!-- capture logging via Log4j 1.2, Log4j2, and Logback, default is true -->
<Logging enabled="true" />
<!-- capture outgoing HTTP calls performed through Apache HttpClient, OkHttp,
and java.net.HttpURLConnection, default is true -->
<HTTP enabled="true" />
<!-- capture JDBC queries, default is true -->
<JDBC enabled="true" />
<!-- capture Redis calls, default is true -->
<Jedis enabled="true" />
<!-- capture query plans for JDBC queries that exceed this value (MySQL, PostgreSQL),
default is 10000 milliseconds -->
<MaxStatementQueryLimitInMS>1000</MaxStatementQueryLimitInMS>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
Další konfigurace (Spring Boot)
java -javaagent:/path/to/agent.jar -jar path/to/TestApp.jar
Pro Azure App Service postupujte takto:
Vyberte Nastavení>Nastavení aplikace.
V části Nastavení aplikace přidejte nový pár hodnot klíče:
-
Klíč:
JAVA_OPTS -
Hodnota:
-javaagent:D:/home/site/wwwroot/applicationinsights-agent-2.6.4.jar
Agent musí být zahrnut jako prostředek ve vašem projektu, aby se dostal do adresáře D:/home/site/wwwroot/. Pokud chcete ověřit, že je váš agent ve správném adresáři služby App Service, přejděte do Development Tools>Advanced Tools>Debug Console a prozkoumejte obsah adresáře webu.
-
Klíč:
Uložte nastavení a restartujte aplikaci. Tento postup platí jenom pro aplikační služby spuštěné ve Windows.
Poznámka:
AI-Agent.xml a soubor JAR agenta by měly být ve stejné složce. Často jsou umístěné společně ve složce /resources projektu.
Povolení distribuovaného trasování W3C
Do AI-Agent.xmlpřidejte následující fragment kódu:
<Instrumentation>
<BuiltIn enabled="true">
<HTTP enabled="true" W3C="true" enableW3CBackCompat="true"/>
</BuiltIn>
</Instrumentation>
Poznámka:
Režim zpětné kompatibility je ve výchozím nastavení povolený. Parametr enableW3CBackCompat je volitelný a měl by se použít jenom v případě, že ho chcete vypnout.
V ideálním případě by to byl případ, kdy byly všechny vaše služby aktualizovány na novější verze sad SDK podporujících protokol W3C. Doporučujeme co nejdříve přejít na novější verze sad SDK s podporou W3C.
Ujistěte se, že konfigurace příchozích i odchozích (agentů) jsou naprosto stejné.
Zobrazení dat
V prostředku Application Insights se na dlaždici Výkon zobrazí agregovaná doba provádění vzdálených závislostí a metod.
Pokud chcete vyhledat jednotlivé instance závislostí, výjimek a sestav metod, otevřete hledání.
Přečtěte si další informace o diagnostice problémů se závislostmi.
Máte dotazy nebo problémy?
Použijte následující zdroje informací:
- Žádná data? Nastavte výjimky brány firewall.
- Řešení potíží s Javou
Filtrování telemetrie ve webové aplikaci v Javě
Filtry poskytují způsob, jak vybrat telemetrii, kterou webová aplikace v Javě odesílá do Application Insights. K dispozici jsou některé předpřipravené filtry, které můžete použít. Můžete také napsat vlastní filtry.
Mezi přednastavené filtry patří:
- Úroveň závažnosti sledování
- Konkrétní adresy URL, klíčová slova nebo kódy odpovědí
- Rychlé odpovědi. Jinými slovy, požadavky, na které vaše aplikace rychle odpověděla.
- Konkrétní názvy událostí.
Poznámka:
Filtry zkreslují metriky vaší aplikace. Můžete se například rozhodnout, že při diagnostice pomalých odpovědí nastavíte filtr, který zahodí rychlou dobu odezvy. Musíte ale vědět, že průměrná doba odezvy hlášená službou Application Insights pak bude pomalejší než skutečná rychlost. Počet požadavků bude také menší než skutečný počet.
Pokud se jedná o problém, použijte vzorkování místo toho.
Nastavení filtrů
V ApplicationInsights.xmlpřidejte oddíl podobný tomuto příkladu TelemetryProcessors :
<ApplicationInsights>
<TelemetryProcessors>
<BuiltInProcessors>
<Processor type="TraceTelemetryFilter">
<Add name="FromSeverityLevel" value="ERROR"/>
</Processor>
<Processor type="RequestTelemetryFilter">
<Add name="MinimumDurationInMS" value="100"/>
<Add name="NotNeededResponseCodes" value="200-400"/>
</Processor>
<Processor type="PageViewTelemetryFilter">
<Add name="DurationThresholdInMS" value="100"/>
<Add name="NotNeededNames" value="home,index"/>
<Add name="NotNeededUrls" value=".jpg,.css"/>
</Processor>
<Processor type="TelemetryEventFilter">
<!-- Names of events we don't want to see -->
<Add name="NotNeededNames" value="Start,Stop,Pause"/>
</Processor>
<!-- Exclude telemetry from availability tests and bots -->
<Processor type="SyntheticSourceFilter">
<!-- Optional: specify which synthetic sources,
comma-separated
- default is all synthetics -->
<Add name="NotNeededSources" value="Application Insights Availability Monitoring,BingPreview"
</Processor>
</BuiltInProcessors>
<CustomProcessors>
<Processor type="com.fabrikam.MyFilter">
<Add name="Successful" value="false"/>
</Processor>
</CustomProcessors>
</TelemetryProcessors>
</ApplicationInsights>
Zkontrolujte úplnou sadu integrovaných procesorů.
Předdefinované filtry
Tato část popisuje předdefinované filtry, které jsou k dispozici.
Filtr metrik telemetrie
<Processor type="MetricTelemetryFilter">
<Add name="NotNeeded" value="metric1,metric2"/>
</Processor>
-
NotNeeded: Čárkami oddělený seznam vlastních názvů metrik
Filtr telemetrie zobrazení stránky
<Processor type="PageViewTelemetryFilter">
<Add name="DurationThresholdInMS" value="500"/>
<Add name="NotNeededNames" value="page1,page2"/>
<Add name="NotNeededUrls" value="url1,url2"/>
</Processor>
-
DurationThresholdInMS: Doba trvání odkazuje na čas potřebný k načtení stránky. Pokud je tento parametr nastavený, stránky, které se načetly rychleji než tentokrát, se nenahlásí. -
NotNeededNames: Čárkami oddělený seznam názvů stránek. -
NotNeededUrls: Čárkami oddělený seznam fragmentů adres URL. Například"home"vyfiltruje všechny stránky, které mají v adrese URL "domů".
Filtr požadavků telemetrie
<Processor type="RequestTelemetryFilter">
<Add name="MinimumDurationInMS" value="500"/>
<Add name="NotNeededResponseCodes" value="page1,page2"/>
<Add name="NotNeededUrls" value="url1,url2"/>
</Processor>
Filtr syntetického zdroje
Vyfiltruje veškerou telemetrii, která obsahuje hodnoty ve SyntheticSource vlastnosti. Součástí jsou požadavky robotů, pavouků a testů dostupnosti.
Vyfiltruje telemetrická data pro všechny syntetické žádosti.
<Processor type="SyntheticSourceFilter" />
Vyfiltruje telemetrii pro konkrétní syntetické zdroje:
<Processor type="SyntheticSourceFilter" >
<Add name="NotNeeded" value="source1,source2"/>
</Processor>
-
NotNeeded: Čárkami oddělený seznam názvů syntetických zdrojů
Filtr událostí telemetrie
Filtruje vlastní události, které byly zaznamenány pomocí TrackEvent().
<Processor type="TelemetryEventFilter" >
<Add name="NotNeededNames" value="event1, event2"/>
</Processor>
-
NotNeededNames: Seznam názvů událostí oddělených čárkami
Filtr sledování telemetrie
Filtruje záznamy protokolů zaznamenané pomocí TrackTrace() nebo kolektoru pro protokolovací rámec:
<Processor type="TraceTelemetryFilter">
<Add name="FromSeverityLevel" value="ERROR"/>
</Processor>
Platné
FromSeverityLevelhodnoty jsou:- VYPNUTO: Vyfiltruje všechna trasování.
- TRACE: Žádné filtrování. Rovná se úrovni TRACE.
- INFORMACE: Filtruje úroveň TRACE.
- UPOZORNĚNÍ: Filtruje TRACE a INFO.
- CHYBA: Filtrovat VAROVÁNÍ, INFO a TRACE.
- KRITICKÉ: Filtruje všechny kromě kritických.
Vlastní filtry
Následující části ukazují postup vytvoření vlastních filtrů.
Naprogramujte filtr
V kódu vytvořte třídu, která implementuje TelemetryProcessor:
package com.fabrikam.MyFilter;
import com.microsoft.applicationinsights.extensibility.TelemetryProcessor;
import com.microsoft.applicationinsights.telemetry.Telemetry;
public class SuccessFilter implements TelemetryProcessor {
/* Any parameters that are required to support the filter.*/
private final String successful;
/* Initializers for the parameters, named "setParameterName" */
public void setNotNeeded(String successful)
{
this.successful = successful;
}
/* This method is called for each item of telemetry to be sent.
Return false to discard it.
Return true to allow other processors to inspect it. */
@Override
public boolean process(Telemetry telemetry) {
if (telemetry == null) { return true; }
if (telemetry instanceof RequestTelemetry)
{
RequestTelemetry requestTelemetry = (RequestTelemetry) telemetry;
return request.getSuccess() == successful;
}
return true;
}
}
Vyvolání filtru v konfiguračním souboru
Nyní v ApplicationInsights.xml:
<ApplicationInsights>
<TelemetryProcessors>
<CustomProcessors>
<Processor type="com.fabrikam.SuccessFilter">
<Add name="Successful" value="false"/>
</Processor>
</CustomProcessors>
</TelemetryProcessors>
</ApplicationInsights>
Vyvolání filtru (Java Spring)
U aplikací založených na architektuře Spring musí být vlastní procesory telemetrie zaregistrované ve vaší hlavní třídě aplikace jako bean. Po spuštění aplikace se pak automaticky připojí.
@Bean
public TelemetryProcessor successFilter() {
return new SuccessFilter();
}
Vytvoříte vlastní parametry filtru v souboru application.properties. Pak pomocí externalizované konfigurační architektury Spring Boot předáte tyto parametry do vlastního filtru.
Řešení problémů
Tato část nabízí tip pro řešení potíží.
Můj filtr nefunguje
Zkontrolujte, jestli jste zadali platné hodnoty parametrů. Například doby trvání by měly být celá čísla. Neplatné hodnoty způsobí ignorování filtru. Pokud váš vlastní filtr vyvolá výjimku z konstruktoru nebo metody set, bude ignorován.
collectd: Metriky výkonu Linuxu v Application Insights (zastaralé)
Pokud chcete prozkoumat metriky výkonu systému Linux ve službě Application Insights, nainstalujte collectd společně s modulem plug-in Application Insights. Toto opensourcové řešení shromažďuje různé systémové a síťové statistiky.
Obvykle se používá collectd , pokud jste už instrumentovali webovou službu Java pomocí Application Insights. Poskytuje více dat, která vám pomůžou vylepšit výkon vaší aplikace nebo diagnostikovat problémy.
Získání klíče instrumentace
Na webu Azure Portal otevřete prostředek Application Insights , ve kterém se mají zobrazit data. Nebo můžete vytvořit nový prostředek.
Vytvořte kopii instrumentačního klíče, který identifikuje prostředek.
Instalace shromážděného modulu plug-in a modulu plug-in
Na serverových počítačích s Linuxem:
- Nainstalujte collectd verze 5.4.0 nebo novější.
- Stáhněte plug-in collectd pro Application Insights. Poznamenejte si číslo verze.
- Zkopírujte JAR soubor zásuvného modulu do
/usr/share/collectd/java. - Upravit
/etc/collectd/collectd.conf:Ujistěte se, že je povolený modul plug-in Java .
Aktualizujte JVMArg, aby zahrnoval následující jar pro
java.class.path. Aktualizujte číslo verze tak, aby odpovídalo verzi, kterou jste stáhli:/usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar
Přidejte tento fragment kódu pomocí instrumentačního klíče z vašeho prostředku:
LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter" <Plugin ApplicationInsightsWriter> InstrumentationKey "Your key" </Plugin>Tady je část ukázkového konfiguračního souboru:
... # collectd plugins LoadPlugin cpu LoadPlugin disk LoadPlugin load ... # Enable Java Plugin LoadPlugin "java" # Configure Java Plugin <Plugin "java"> JVMArg "-verbose:jni" JVMArg "-Djava.class.path=/usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar:/usr/share/collectd/java/collectd-api.jar" # Enabling Application Insights plugin LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter" # Configuring Application Insights plugin <Plugin ApplicationInsightsWriter> InstrumentationKey "12345678-1234-1234-1234-123456781234" </Plugin> # Other plugin configurations ... ... </Plugin> ...
Nakonfigurujte další shromážděné moduly plug-in, které můžou shromažďovat různá data z různých zdrojů.
Restartujte collectd ho podle návodu.
Zobrazení dat v Application Insights
V prostředku Application Insights otevřete metriky a přidejte grafy. Vyberte metriky, které chcete zobrazit v kategorii Vlastní .
Ve výchozím nastavení se metriky agregují napříč všemi hostitelskými počítači, ze kterých byly metriky shromážděny. Pokud chcete zobrazit metriky na hostitele, v podokně Podrobnosti grafu zapněte Seskupení, a pak zvolte seskupení podle CollectD-Host.
Vyloučení nahrávání konkrétních statistik
Modul plug-in Application Insights ve výchozím nastavení odesílá všechna data shromážděná všemi povolenými collectd read moduly plug-in.
Vyloučení dat z konkrétních modulů plug-in nebo zdrojů dat:
Upravte konfigurační soubor.
V
<Plugin ApplicationInsightsWriter>přidejte řádky direktiv podobné těm, které jsou uvedeny v následující tabulce:Direktiva Účinek Exclude diskVylučte všechna data shromážděná modulem diskplug-in.Exclude disk:read,writeVylučte zdroje pojmenované readawritezdiskmodulu plug-in.
Direktivy oddělte novým řádekem.
Problémy?
Tato část nabízí tipy pro řešení potíží.
Na portálu se nezobrazují data
Vyzkoušejte tyto možnosti:
- Otevřete hledání a podívejte se, jestli nezpracované události dorazily. Někdy se v Průzkumníku metrik zobrazují až po delší době.
- Možná budete muset nastavit výjimky firewallu pro odchozí data.
- Povolte trasování v modulu plug-in Application Insights. Přidejte tento řádek do
<Plugin ApplicationInsightsWriter>:SDKLogger true
- Otevřete terminál a spusťte
collectdho v podrobném režimu, abyste viděli případné problémy, které hlásí:sudo collectd -f
Známý problém
Modul plug-in pro zápis Application Insights není kompatibilní s určitými moduly plug-in pro čtení. Některé moduly plug-in se někdy odesílají NaN, ale modul plug-in Application Insights očekává číslo s plovoucí desetinnou čárkou.
-
Příznak: Protokol
collectdzobrazuje chyby, které zahrnují "AI: ... SyntaxError: Neočekávaný token N." - Alternativní řešení: Vylučte data shromážděná pomocí plug-inů pro zápis problémů.
Použití Micrometer se sadou Application Insights Java SDK (nedoporučováno)
Monitorování aplikací mikrometrů měří metriky kódu aplikace založeného na prostředí JVM a umožňuje exportovat data do oblíbených monitorovacích systémů. V této části se dozvíte, jak používat mikrometr s Application Insights pro aplikace Spring Boot i aplikace mimo Spring Boot.
Použijte Spring Boot 1.5x
Přidejte následující závislosti do souboru pom.xml nebo build.gradle:
- Application Insights spring-boot-starter 2.5.0 nebo novější
- Mikrometer Azure Registry 1.1.0 nebo novější
- Micrometer Spring Legacy 1.1.0 nebo novější. Ten zpětně portuje kód automatické konfigurace ve frameworku Spring.
- Prostředek ApplicationInsights
Postupujte následovně:
Aktualizujte souborpom.xml aplikace Spring Boot a přidejte do něj následující závislosti:
<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>Aktualizujte soubor application.properties nebo YML pomocí instrumentačního klíče Application Insights pomocí následující vlastnosti:
azure.application-insights.instrumentation-key=<your-instrumentation-key-here>Sestavte aplikaci a spusťte ji.
Předchozí kroky by vám měly pomoci spustit systém s předem agregovanými metrikami, které jsou automaticky shromažďovány službou Azure Monitor.
Použijte Spring 2.x
Přidejte následující závislosti do souboru pom.xml nebo build.gradle:
- Application Insights Spring-boot-starter 2.1.2 nebo novější
- Azure-spring-boot-metrics-starters 2.0.7 nebo novější
- Prostředek Application Insights
Postupujte následovně:
Aktualizujte souborpom.xml aplikace Spring Boot a přidejte do ní následující závislost:
<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>azure-spring-boot-metrics-starter</artifactId> <version>2.0.7</version> </dependency>Aktualizujte soubor application.properties nebo YML pomocí instrumentačního klíče Application Insights pomocí následující vlastnosti:
azure.application-insights.instrumentation-key=<your-instrumentation-key-here>Sestavte aplikaci a spusťte ji.
Předchozí kroky by vám měly pomoci se spuštěním s předem agregovanými metrikami, které jsou automaticky shromažďovány ve službě Azure Monitor. Další informace o tom, jak vyladit úvodní sadu Spring Boot pro Application Insights, najdete v souboru readme na GitHubu.
Výchozí metriky:
- Automaticky nakonfigurované metriky pro Tomcat, JVM, Logback Metrics, Log4J Metrics, Uptime Metrics, Processor Metrics a FileDescriptorMetrics.
- Pokud je například na cestě třídy k dispozici Netflix Hystrix, získáme tyto metriky také.
- Následující metriky můžou být k dispozici přidáním příslušných fazolí:
-
CacheMetrics(CaffeineCache,EhCache2,GuavaCache,HazelcastCacheaJCache) DataBaseTableMetricsHibernateMetricsJettyMetrics-
OkHttp3Metriky -
KafkaMetriky
-
Vypnutí automatické shromažďování metrik:
- Metriky JVM
management.metrics.binders.jvm.enabled=false
- Metriky zpětného protokolování:
management.metrics.binders.logback.enabled=false
- Metriky doby provozu:
management.metrics.binders.uptime.enabled=false
- Metriky procesoru:
management.metrics.binders.processor.enabled=false
- Metriky popisovače souborů:
management.metrics.binders.files.enabled=false
- Podmínky metrik Hystrix, pokud je knihovna na
classpath:management.metrics.binders.hystrix.enabled=false
- Metriky AspectJ, pokud je knihovna zapnutá:
classpathspring.aop.enabled=false
Poznámka:
Zadejte předchozí vlastnosti v souboru application.properties nebo application.yml aplikace Spring Boot.
Použití mikrometru s webovými aplikacemi mimo Spring Boot
Přidejte následující závislosti do souboru pom.xml nebo build.gradle:
- Application Insights Web Auto 2.5.0 nebo novější
- Mikrometr Azure Registry 1.1.0 nebo vyšší
- Prostředek Application Insights
Postupujte následovně:
Do souboru pom.xml nebo build.gradle přidejte následující závislosti:
<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>Pokud jste to ještě neudělali, přidejte souborApplicationInsights.xml do složky prostředků. Další informace najdete v tématu Přidání souboru ApplicationInsights.xml.
Ukázková třída Servletu (generuje metriku časovače):
@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"); } }Ukázková třída konfigurace:
@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) { } }
Další informace o metrikách najdete v dokumentaci k mikrometrům.
Další ukázkový kód o tom, jak vytvořit různé typy metrik, najdete v oficiálním úložišti Micrometer Na GitHubu.
Vytvoření vazby dalších kolekcí metrik
Následující části ukazují, jak shromažďovat další metriky.
SpringBoot/Spring
Vytvořte bean příslušné kategorie metriky. Například, pokud potřebujete metriky Guava Cache:
@Bean
GuavaCacheMetrics guavaCacheMetrics() {
Return new GuavaCacheMetrics();
}
Ve výchozím nastavení není povoleno několik metrik, ale může být vázáno předchozím způsobem. Úplný seznam najdete v úložišti Micrometer Na GitHubu.
Aplikace jiné než Spring
Do konfiguračního souboru přidejte následující kód vazby:
New GuavaCacheMetrics().bind(registry);
Základní rozhraní API pro vlastní události a metriky
Vložte do aplikace několik řádků kódu, abyste zjistili, co s ním uživatelé dělají, nebo abyste mohli diagnostikovat problémy. Můžete odesílat telemetrii ze zařízení a desktopových aplikací, webových klientů a webových serverů. Pomocí základního rozhraní API telemetrie Application Insights můžete odesílat vlastní události a metriky a vlastní verze standardní telemetrie. Toto rozhraní API je to samé, které používají standardní kolektory dat Application Insights.
Souhrn rozhraní API
Základní rozhraní API je jednotné na všech platformách, kromě několika odchylek, jako je GetMetric (pouze pro .NET).
| Metoda | Používá se pro |
|---|---|
TrackPageView |
Stránky, obrazovky, podokna nebo formuláře |
TrackEvent |
Akce uživatelů a další události Používá se ke sledování chování uživatelů nebo ke sledování výkonu. |
TrackMetric |
Měření výkonu, jako jsou délky front, nesouvisely s konkrétními událostmi. |
TrackException |
Protokolování výjimek pro diagnostiku Sledovat, kde se vyskytují ve vztahu k jiným událostem, a zkoumat trasování zásobníku. |
TrackRequest |
Protokolování frekvence a doby trvání požadavků serveru pro analýzu výkonu |
TrackTrace |
Zprávy logu diagnostiky prostředků Můžete také zaznamenávat protokoly třetích stran. |
TrackDependency |
Protokolování doby trvání a frekvence volání externích komponent, na které vaše aplikace závisí. |
K většině těchto volání telemetrie můžete připojit vlastnosti a metriky .
Požadavky
Pokud zatím nemáte referenci na Application Insights SDK:
Přidejte do projektu sadu Application Insights SDK.
Zahrňte do kódu vašeho zařízení nebo webového serveru:
import com.microsoft.applicationinsights.TelemetryClient;
Získání instance TelemetryClient
Získání instance TelemetryClient:
private TelemetryClient telemetry = new TelemetryClient();
TelemetryClient je vláknově bezpečné.
Poznámka:
Pokud používáte Azure Functions v2 nebo Azure WebJobs v3+, přečtěte si téma Monitorování Azure Functions.
Možná budete chtít vytvořit další instance pro další moduly TelemetryClient vaší aplikace. Můžete mít například v middlewarové třídě jednu TelemetryClient instanci pro hlášení událostí obchodní logiky. Můžete nastavit vlastnosti, například UserId a DeviceId identifikovat počítač. Tyto informace jsou připojeny ke všem událostem, které instance odesílá.
telemetry.getContext().getUser().setId("...");
telemetry.getContext().getDevice().setId("...");
TrackEvent
Ve službě Application Insights je vlastní událost datovým bodem, který můžete v Průzkumníku metrik zobrazit jako agregovaný počet a v diagnostickém vyhledávání jako jednotlivé výskyty. (Nesouvisí s MVC ani s jinými "frameworkovými událostmi".)
Vložte volání TrackEvent do kódu pro počítání různých událostí. Můžete například chtít sledovat, jak často si uživatelé vyberou konkrétní funkci. Nebo můžete chtít vědět, jak často dosahují určitých cílů nebo dělají určité typy chyb.
Například v aplikaci hry odešlete událost pokaždé, když uživatel vyhraje hru:
telemetry.trackEvent("WinGame");
Vlastní události v Log Analytics
Telemetrie je dostupná v customEvents tabulce na kartě Protokoly Application Insights nebo v prostředí využití. Události mohou pocházet buď z trackEvent(..), nebo z automatického sběru dat pomocí modulu plug-in Click Analytics.
Pokud je vzorkování v provozu, itemCount vlastnost zobrazuje hodnotu větší než 1. Například itemCount==10 znamená, že z 10 volání na trackEvent() proces vzorkování přenesl pouze jedno. Pokud chcete získat správný počet vlastních událostí, použijte kód, například customEvents | summarize sum(itemCount).
Poznámka:
itemCount má minimální hodnotu jedné; samotný záznam představuje položku.
TrackMetric
Application Insights může grafovat metriky, které nejsou připojené k určitým událostem. Můžete například monitorovat délku fronty v pravidelných intervalech. U metrik jsou jednotlivá měření méně zajímavá než variace a trendy, takže statistické grafy jsou užitečné.
K odesílání metrik do Application Insights můžete použít TrackMetric(..) rozhraní API. Metriku můžete odeslat dvěma způsoby:
Jedna hodnota. Pokaždé, když v aplikaci provedete měření, odešlete odpovídající hodnotu do Application Insights.
Předpokládejme například, že máte metriku, která popisuje počet položek v kontejneru. Během určitého časového období nejprve vložíte do kontejneru tři položky a pak odeberete dvě položky. Proto byste volali
TrackMetricdvakrát. Nejprve byste předali hodnotu3a pak předali hodnotu-2. Application Insights ukládá obě hodnoty za vás.Agregace. Při práci s metrikami je každé měření zřídka zajímavé. Místo toho je důležité shrnutí toho, co se stalo během určitého časového období. Takový souhrn se nazývá agregace.
V předchozím příkladu je
1agregační součet metrik pro dané časové období a počet hodnot metriky .2Při použití přístupu k agregaci vyvoláteTrackMetricpouze jednou za časové období a odešlete agregované hodnoty. Tento přístup doporučujeme, protože může výrazně snížit náklady a výkon tím, že do Application Insights odesílá méně datových bodů, zatímco stále shromažďuje všechny relevantní informace.
Příklady s jednou hodnotou
Odeslání jedné hodnoty metriky:
telemetry.trackMetric("queueLength", 42.0);
Vlastní metriky v Log Analytics
Telemetrie je dostupná v tabulce v customMetricsAnalýzách Application Insights. Každý řádek představuje volání trackMetric(..) v aplikaci.
-
valueSum: Součet měření. Chcete-li získat střední hodnotu, vydělte hodnotouvalueCount. -
valueCount: Počet měření, které byly agregovány do tohototrackMetric(..)volání.
Poznámka:
valueCount má minimální hodnotu jedné; samotný záznam představuje položku.
Zobrazení stránek
V zařízení nebo webové aplikaci se při načtení každé obrazovky nebo stránky automaticky odesílají data o zobrazení stránek. Výchozí nastavení ale můžete změnit tak, aby sledovala zobrazení stránek ve více nebo různých časech. Například v aplikaci, která zobrazuje karty nebo podokna, můžete chtít sledovat stránku pokaždé, když uživatel otevře nové podokno.
Data uživatelů a relací se odesílají jako vlastnosti spolu se zobrazeními stránek, takže grafy uživatelů a relací ožijí, když dojde k telemetrii zobrazení stránky.
Vlastní zobrazení stránek
telemetry.trackPageView("GameReviewPage");
Telemetrie stránek v Log Analytics
V Log Analytics zobrazují dvě tabulky data z operací prohlížeče:
-
pageViews: Obsahuje data o adrese URL a názvu stránky. -
browserTimings: Obsahuje data o výkonu klienta, jako je doba potřebná ke zpracování příchozích dat.
Zjistěte, jak dlouho prohlížeči trvá zpracování různých stránek:
browserTimings
| summarize avg(networkDuration), avg(processingDuration), avg(totalDuration) by name
Pokud chcete zjistit popularitu různých prohlížečů:
pageViews
| summarize count() by client_Browser
Chcete-li přidružit zobrazení stránek k voláním AJAX, spojte je se závislostmi:
pageViews
| join (dependencies) on operation_Id
TrackRequest
Serverová sada SDK používá TrackRequest k protokolování požadavků HTTP.
Můžete ho také volat sami, pokud chcete simulovat požadavky v kontextu, kde nemáte spuštěný modul webové služby.
Doporučeným způsobem odesílání telemetrie požadavků je, když požadavek slouží jako kontext operace.
Kontext operace
Položky telemetrie můžete vzájemně korelovat tím, že je přidružíte k kontextu operace. Standardní modul pro sledování požadavků to dělá u výjimek a dalších událostí, které se odesílají při zpracování požadavku HTTP. Ve službě Search a Analytics můžete snadno najít všechny události přidružené k požadavku pomocí ID operace.
Položky telemetrie hlášené v rámci operace se stanou podřízenými položkami takové operace. Kontexty operací můžou být vnořené.
Při hledání se kontext operace používá k vytvoření seznamu Souvisejících položek .
Požadavky v Log Analytics
V Application Insights Analytics se požadavky zobrazí v requests tabulce.
Pokud je vzorkování v provozu, itemCount vlastnost zobrazuje hodnotu větší než 1. Například itemCount==10 znamená, že z 10 volání na trackRequest() proces vzorkování přenesl pouze jedno. Pokud chcete získat správný počet požadavků a průměrnou dobu trvání segmentovanou podle názvů požadavků, použijte kód, například:
requests
| summarize count = sum(itemCount), avgduration = avg(duration) by name
TrackException
Odesílání výjimek do Application Insights:
- Pokud je chcete spočítat, jako indikátor četnosti problému.
- Chcete-li prozkoumat jednotlivé výskyty.
Hlášení zahrnují zásobníkové trasování.
try {
...
} catch (Exception ex) {
telemetry.trackException(ex);
}
Výjimky jsou zachyceny automaticky, takže nemusíte vždy volat TrackException explicitně.
Výjimky v Log Analytics
V Application Insights Analytics se výjimky zobrazují v exceptions tabulce.
Pokud je vzorkování v provozu, itemCount vlastnost zobrazuje hodnotu větší než 1. Například itemCount==10 znamená, že z 10 volání na trackException() proces vzorkování přenesl pouze jedno. Pokud chcete získat správný počet výjimek segmentovaných podle typu výjimky, použijte kód, například:
exceptions
| summarize sum(itemCount) by type
Většina důležitých informací o zásobníku je již extrahována do samostatných proměnných, ale můžete strukturu details rozdělit pro získání dalších informací. Vzhledem k tomu, že je tato struktura dynamická, měli byste výsledek přetypovat na očekávaný typ. Například:
exceptions
| extend method2 = tostring(details[0].parsedStack[1].method)
Pokud chcete přidružit výjimky k souvisejícím požadavkům, použijte připojení:
exceptions
| join (requests) on operation_Id
TrackTrace
Použijte TrackTrace k diagnostice problémů odesláním "stopy drobečků" do Application Insights. Můžete odesílat bloky diagnostických dat a kontrolovat je v diagnostickém vyhledávání.
Poznámka:
V jazyce Java agent Application Insights pro Javu automaticky sbírá a odesílá protokoly na portál.
telemetry.trackTrace(message, SeverityLevel.Warning, properties);
Zaznamená diagnostickou událost, jako je zadání nebo opuštění metody.
| Parameter | Description |
|---|---|
message |
Diagnostická data. Může být mnohem delší než název. |
properties |
Mapa od řetězce k řetězci Další data se používají k filtrování výjimek na portálu. Výchozí hodnota je prázdná. |
severityLevel |
Podporované hodnoty: SeverityLevel.ts. |
Obsah zprávy můžete prohledávat, ale na rozdíl od hodnot vlastností na něm nemůžete filtrovat.
Limit message velikosti je mnohem vyšší než limit vlastností. Výhodou TrackTrace je, že do zprávy můžete vložit relativně dlouhá data. Můžete tam například zakódovat data POST.
Ke zprávě můžete také přidat úroveň závažnosti. A stejně jako jiná telemetrie můžete přidat hodnoty vlastností, které vám pomůžou filtrovat nebo vyhledávat různé sady tras. Například:
Map<String, Integer> properties = new HashMap<>();
properties.put("Database", db.ID);
telemetry.trackTrace("Slow Database response", SeverityLevel.Warning, properties);
Ve službě Search pak můžete snadno vyfiltrovat všechny zprávy konkrétní úrovně závažnosti, které souvisejí s konkrétní databází.
Trasování v Log Analytics
V Application Insights Analytics se volání do TrackTrace zobrazují v tabulce traces.
Pokud je vzorkování v provozu, itemCount vlastnost zobrazuje hodnotu větší než 1. Například itemCount==10 znamená, že z 10 volání na trackTrace() proces vzorkování přenesl pouze jedno. Chcete-li získat správný počet volání trasování, použijte například tento kód: traces | summarize sum(itemCount).
TrackDependency
TrackDependency Volání slouží ke sledování doby odezvy a míry úspěšnosti při volání externí části kódu. Výsledky se zobrazí v grafech závislostí na portálu. Následující fragment kódu se musí přidat všude, kde se provádí volání závislostí.
boolean success = false;
Instant startTime = Instant.now();
try {
success = dependency.call();
}
finally {
Instant endTime = Instant.now();
Duration delta = Duration.between(startTime, endTime);
RemoteDependencyTelemetry dependencyTelemetry = new RemoteDependencyTelemetry("My Dependency", "myCall", delta, success);
dependencyTelemetry.setTimeStamp(startTime);
telemetry.trackDependency(dependencyTelemetry);
}
Poznámka:
V Javě je možné pomocí agenta Java Application Insights automaticky sledovat mnoho volání závislostí.
Toto volání použijete, pokud chcete sledovat volání, která automatizované sledování nezachytí.
Závislosti v Log Analytics
V Application Insights Analytics se trackDependency volání zobrazí v dependencies tabulce.
Pokud je vzorkování v provozu, vlastnost itemCount zobrazuje hodnotu větší než 1. Například itemCount==10 znamená, že z 10 volání na trackDependency() proces vzorkování přenesl pouze jedno. Pokud chcete získat správný počet závislostí segmentovaných podle cílové komponenty, použijte kód, například:
dependencies
| summarize sum(itemCount) by target
Pokud chcete přidružit závislosti k souvisejícím požadavkům, použijte spojení:
dependencies
| join (requests) on operation_Id
Vyčištění dat
Sada SDK obvykle odesílá data v pevných intervalech, obvykle 30 sekund nebo kdykoli je vyrovnávací paměť plná, což je obvykle 500 položek. V některých případech můžete chtít vyrovnávací paměť vyprázdnit. Příkladem je, že používáte sadu SDK v aplikaci, která se vypne.
telemetry.flush();
//Allow some time for flushing before shutting down
Thread.sleep(5000);
Poznámka:
Sada Java SDK se automaticky vyprázdní při vypnutí aplikace.
Ověření uživatelé
Ve webové aplikaci jsou uživatelé ve výchozím nastavení identifikováni soubory cookie . Pokud uživatel přistupuje k aplikaci z jiného počítače nebo prohlížeče, nebo pokud odstraní soubory cookie, může se počítat více než jednou.
Pokud se uživatelé přihlásí k aplikaci, můžete získat přesnější počet nastavením ověřeného ID uživatele v kódu prohlížeče. Není nutné použít skutečné přihlašovací jméno uživatele. Musí to být jen ID, které je pro daného uživatele jedinečné. Nesmí obsahovat mezery ani žádný z znaků ,;=|.
ID uživatele je také nastaveno v relačním souboru cookie a odesláno na server. Pokud je sada SDK serveru nainstalovaná, ověřené ID uživatele se odešle jako součást kontextových vlastností telemetrie klienta i serveru. Můžete ho pak filtrovat a vyhledávat.
Pokud vaše aplikace seskupí uživatele do účtů, můžete mu také předat identifikátor. Platí stejná omezení znaků.
V Průzkumníku metrik můžete vytvořit graf, který počítá uživatele, ověřené a uživatelské účty.
Můžete také vyhledat klientské datové body s konkrétními uživatelskými jmény a účty.
Filtrování, vyhledávání a segmentace dat pomocí vlastností
Vlastnosti a měření můžete připojit k událostem, metrikám, zobrazením stránek, výjimkám a dalším telemetrickým datům.
Vlastnosti jsou řetězcové hodnoty, které můžete použít k filtrování telemetrie přímo v přehledech o využití. Pokud například vaše aplikace poskytuje několik her, můžete ke každé události připojit název hry, abyste viděli, které hry jsou oblíbenější.
Délka řetězce je omezena na 8 192. Pokud chcete odesílat velké bloky dat, použijte parametr TrackTrace zprávy.
Metriky jsou číselné hodnoty, které lze graficky prezentovat. Například můžete chtít zjistit, zda dochází k postupnému zvyšování skóre, kterého vaši hráči dosahují. Grafy je možné segmentovat podle vlastností odesílaných s událostí, abyste mohli získat samostatné nebo skládané grafy pro různé hry.
Hodnoty metrik by měly být větší nebo rovny 0, aby se správně zobrazily.
Existuje několik omezení počtu vlastností, hodnot vlastností a metrik, které můžete použít.
Map<String, String> properties = new HashMap<String, String>();
properties.put("game", currentGame.getName());
properties.put("difficulty", currentGame.getDifficulty());
Map<String, Double> metrics = new HashMap<String, Double>();
metrics.put("Score", currentGame.getScore());
metrics.put("Opponents", currentGame.getOpponentCount());
telemetry.trackEvent("WinGame", properties, metrics);
Důležité
Ujistěte se, že ve vlastnostech nezapíšete identifikovatelné osobní údaje.
Výstraha
Nepoužívejte opakovaně stejnou instanci položky telemetrie (event v tomto příkladu) k opakovanému volání Track*() . Tento postup může způsobit odesílání telemetrie s nesprávnou konfigurací.
Vlastní měření a vlastnosti v Log Analytics
V Log Analytics se vlastní metriky a vlastnosti zobrazují v customMeasurements a v customDimensions atributech jednotlivých záznamů telemetrie.
Pokud například do telemetrie požadavku přidáte vlastnost s názvem "game", tento dotaz spočítá výskyty různých hodnot "hry" a zobrazí průměr vlastní metriky "score":
requests
| summarize sum(itemCount), avg(todouble(customMeasurements.score)) by tostring(customDimensions.game)
Všimněte si, že:
- Když extrahujete hodnotu z objektu
customDimensionsNEBOcustomMeasurementsJSON, má dynamický typ, takže ji musíte přetypovattostringnebotodouble. - Při zohlednění možnosti odběru vzorků nepoužívejte
sum(itemCount)count().
Události synchronizace
Někdy chcete zobrazit graf, jak dlouho trvá provedení akce. Můžete například chtít vědět, jak dlouho uživatelé berou v úvahu volby ve hře. K získání těchto informací použijte parametr měření.
long startTime = System.currentTimeMillis();
// Perform timed action
long endTime = System.currentTimeMillis();
Map<String, Double> metrics = new HashMap<>();
metrics.put("ProcessingTime", (double)endTime-startTime);
// Setup some properties
Map<String, String> properties = new HashMap<>();
properties.put("signalSource", currentSignalSource.getName());
// Send the event
telemetry.trackEvent("SignalProcessed", properties, metrics);
Výchozí vlastnosti pro vlastní telemetrii
Pokud chcete nastavit výchozí hodnoty vlastností pro některé vlastní události, které napíšete, nastavte je v TelemetryClient instanci. Jsou připojené ke každé položce telemetrie odeslané z daného klienta.
import com.microsoft.applicationinsights.TelemetryClient;
import com.microsoft.applicationinsights.TelemetryContext;
...
TelemetryClient gameTelemetry = new TelemetryClient();
TelemetryContext context = gameTelemetry.getContext();
context.getProperties().put("Game", currentGame.Name);
gameTelemetry.TrackEvent("WinGame");
Jednotlivá volání telemetrie mohou změnit výchozí hodnoty ve svých slovnících vlastností.
Zakázání telemetrie
Dynamické zastavení a spuštění shromažďování a přenosu telemetrie:
telemetry.getConfiguration().setTrackingDisabled(true);
Dynamický připojovací řetězec
Abyste se vyhnuli kombinování telemetrie z vývojových, testovacích a produkčních prostředí, můžete vytvořit samostatné prostředky Application Insights a změnit jejich připojovací řetězce v závislosti na prostředí.
Místo získání připojovacího řetězce z konfiguračního souboru ho můžete nastavit v inicializační metodě kódu:
// Initialize once, e.g., at startup
TelemetryClient telemetry = new TelemetryClient();
// Prefer env var; falls back to hard-coded for illustration
String cs = System.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING");
if (cs != null && !cs.isEmpty()) {
telemetry.getContext().setConnectionString(cs);
}
TelemetryContext
TelemetryClient má vlastnost Context, která obsahuje hodnoty, které se odesílají spolu se všemi telemetrickými daty. Obvykle jsou nastavené standardními moduly telemetrie, ale můžete je také nastavit sami. Například:
telemetry.Context.Operation.Name = "MyOperationName";
Pokud některou z těchto hodnot nastavíte sami, zvažte odebrání příslušného řádku z ApplicationInsights.config , aby se hodnoty a standardní hodnoty nezaměňily.
- Komponenta: Aplikace a její verze.
- Zařízení: Data o zařízení, na kterém je aplikace spuštěná. Ve webových aplikacích se jedná o server nebo klientské zařízení, ze kterého se telemetrie odesílá.
- InstrumentationKey: Prostředek Application Insights v Azure, kde se telemetrie zobrazuje.
- Umístění: Zeměpisné umístění zařízení.
-
Operace: Ve webových aplikacích aktuální požadavek HTTP. V jiných typech aplikací můžete tuto hodnotu nastavit tak, aby seskupily události dohromady.
- ID: Vygenerovaná hodnota, která koreluje různé události, takže při kontrole jakékoli události v diagnostickém vyhledávání můžete najít související položky.
- Název: Identifikátor, obvykle adresa URL požadavku HTTP.
- SyntheticSource: Pokud není null nebo prázdný, řetězec, který označuje, že zdroj požadavku byl identifikován jako robot nebo webový test. Ve výchozím nastavení je vyloučena z výpočtů v Průzkumníku metrik.
- Session: Session uživatele. ID je nastavené na vygenerovanou hodnotu, která se změní, když uživatel nějakou dobu nebyl aktivní.
- Uživatel: Informace o uživateli.
Limits
Existuje několik omezení počtu metrik a událostí na aplikaci, tj. na klíč instrumentace. Limity závisí na zvoleném cenovém plánu .
| Resource | Výchozí omezení | Maximální limit | Poznámky |
|---|---|---|---|
| Celkem dat za den | 100 GB | Obraťte se na podporu. | Můžete nastavit limit pro omezení dat. Pokud potřebujete více dat, můžete limit na portálu zvýšit až o 1 000 GB. U kapacit větších než 1 000 GB odešlete e-mail na AIDataCap@microsoft.comadresu . |
| Throttling | 32 000 událostí za sekundu | Obraťte se na podporu. | Limit je měřen během jedné minuty. |
| Protokoly uchovávání dat | 30 až 730 dní | 730 dní | Tento zdroj je pro protokoly. |
| Metriky uchovávání dat | 90 dní | 90 dní | Tento prostředek je určený pro Průzkumníka metrik. |
| Uchovávání podrobných výsledků vícekrokového testu dostupnosti | 90 dní | 90 dní | Tento prostředek poskytuje podrobné výsledky každého kroku. |
| Maximální velikost položky telemetrie | 64 kB | 64 kB | |
| Maximální počet položek telemetrie na dávku | 64,000 | 64,000 | |
| Délka názvu vlastnosti a metriky | sto padesát | sto padesát | Viz schémata typů. |
| Délka řetězce hodnoty vlastnosti | 8,192 | 8,192 | Viz schémata typů. |
| Délka zprávy sledování a výjimky | 32,768 | 32,768 | Viz schémata typů. |
| Počet testů dostupnosti na prostředek Application Insights | 100 | 100 | |
| Počet testů dostupnosti na skupinu prostředků | 800 | 800 | Podívejte se na Azure Resource Manager |
| Maximální počet přesměrování v testech dostupnosti na jeden test | 10 | 10 | |
| Minimální frekvence testů dostupnosti | 300 sekund | Vlastní frekvence testů nebo frekvence kratší než 5 minut vyžadují speciální implementace TrackAvailability. | |
| Uchovávání dat v .NET Profileru a Snapshot Debuggeru | Dva týdny | Obraťte se na podporu. Maximální limit uchovávání je šest měsíců. | |
| Data odeslaná profilerem .NET za den | Bez omezení | Žádný limit. | |
| Odeslaná data nástroje Snapshot Debugger za den | 30 snímků za den na monitorovanou aplikaci | Žádný limit. | Počet snímků shromážděných pro každou aplikaci je možné upravit prostřednictvím konfigurace. |
Další informace o cenách a kvótách najdete v tématu Fakturace Application Insights.
Pokud se chcete vyhnout dosažení limitu rychlosti dat, použijte vzorkování.
Informace o tom, jak dlouho se data uchovávají, najdete v tématu Uchovávání a ochrana osobních údajů.
Další kroky
- Přidejte monitorování na webové stránky , abyste mohli monitorovat časy načítání stránek, volání AJAX a výjimky prohlížeče.
- Napište vlastní telemetrii pro sledování využití v prohlížeči nebo na serveru.
- Použijte Log Analytics pro silné dotazy nad telemetrií z vaší aplikace.
- Použijte diagnostické vyhledávání.
- Zvažte vzorkování jako alternativu k filtrování, které nešikmuje metriky.
- Další informace o Micrometeru najdete v dokumentaci k mikrometrům.
- Další informace o Springu v Azure najdete v dokumentaci k Springu v Azure.
- Další informace najdete v tématu Azure pro vývojáře v Javě.