Profiler Application Insights pro Azure Monitor pro Javu
Poznámka:
Funkce Java Profiler je ve verzi Preview počínaje verzí 3.4.0.
Java Profiler poskytuje systém pro:
- Generování profilů JDK Flight Recorder (JFR) na vyžádání z prostředí Java Virtual Machine (JVM).
- Automatické generování profilů JFR při splnění určitých podmínek triggeru z prostředí JVM, jako je například procesor nebo paměť, které porušují nakonfigurovanou prahovou hodnotu.
Přehled
Java Profiler používá profiler JFR poskytovaný JVM k zaznamenávání dat profilace, což uživatelům umožňuje stahovat nahrávky JFR později a analyzovat je k identifikaci příčiny problémů s výkonem.
Tato data se shromažďují na vyžádání, když jsou splněny podmínky triggeru. Dostupné triggery jsou prahové hodnoty oproti využití procesoru, spotřebě paměti a žádosti (triggery smlouvy o úrovni služeb). Triggery požadavků monitorují rozsahy generované OpenTelemetry a umožňují uživateli konfigurovat požadavky na smlouvu o úrovni služeb (SLA) po dobu trvání těchto rozsahů.
Po dosažení prahové hodnoty se shromáždí a nahraje profil nakonfigurovaného typu a doby trvání. Tento profil se pak zobrazí v podokně výkonu přidruženého uživatelského rozhraní portálu Application Insights.
Upozorňující
Profiler JFR ve výchozím nastavení spustí profil profile profile-without-env-data. Soubor JFR je řada událostí vygenerovaných prostředím JVM. Konfigurace profile-without-env-data je podobná konfiguraci profilu, která se dodává s prostředím JVM, ale má zakázané události, které mají potenciál obsahovat citlivé informace o nasazení, jako jsou proměnné prostředí, argumenty poskytnuté prostředím JVM a procesy spuštěné v systému.
Příznaky, které už nejsou k dispozici, jsou:
- jdk. JVMInformation
- jdk. InitialSystemProperty
- jdk. OSInformation
- jdk. InitialEnvironmentVariable
- jdk. SystemProcess
Měli byste ale zkontrolovat všechny povolené příznaky, abyste měli jistotu, že profily neobsahují citlivá data.
Viz Konfigurace obsahu profilu při nastavení vlastní konfigurace profileru.
Požadavky
JVM s funkcí Java Flight Recorder (JFR)
- Aktualizace Javy 8 262 nebo novější
- Java 11 a novější
Upozorňující
OpenJ9 JVM se nepodporuje.
Využití
Aktivační události
Podrobnější popis různých dostupných triggerů najdete v tématu Profilování produkčních aplikací v Azure pomocí Profileru Application Insights pro .NET.
Agent Java ApplicationInsights monitoruje dobu trvání procesoru, paměti a požadavku, jako je například obchodní transakce. Pokud dojde k porušení nakonfigurované prahové hodnoty, aktivuje se profil.
Profil
Tlačítko Profil je teď umístěné v uživatelském rozhraní profileru (viz Konfigurace profileru Application Insights pro .NET). Výběrem tohoto tlačítka okamžitě požádáte o profil ve všech agentech připojených k instanci Application Insights. Výchozí doba profilace je dvě minuty. Můžete ho změnit přepsáním periodicRecordingDurationSeconds
(viz Konfigurační soubor).
Upozorňující
Vyvolání profilu teď povolí funkci profileru a Application Insights použije výchozí aktivační události SLA procesoru a paměti. Když vaše aplikace tyto smlouvy SLA překročí, Application Insights shromáždí profily Java. Pokud chcete profilaci zakázat později, můžete to udělat v nabídce triggeru zobrazenou v části Instalace.
Procesor
Prahová hodnota procesoru je procento využití všech dostupných jader v systému.
Pokud by například jedno jádro osmijádrový počítač saturovalo procento procesoru, považuje se za 12,5 %.
Memory (Paměť)
Procento paměti je aktuální obsazená oblast paměti Tenured (OldGen) s maximální možnou velikostí oblasti.
Obsazenost se vyhodnocuje po provedení tenurované kolekce. Maximální velikost tenantované oblasti je velikost, která by byla v případě, že halda virtuálního počítače Java (JVM) vzrostla na maximální velikost.
Například použijte následující scénář:
- Halda Javy se může zvětšit na maximálně 1 024 mb.
- Tenured Generation může růst až na 90 % haldy.
- Maximální možná velikost tenanta by byla 922 mb.
- Prahová hodnota byla nastavena prostřednictvím uživatelského rozhraní na 75 %, proto by vaše prahová hodnota byla 75 % z 922 mb, 691 mb.
V tomto scénáři dojde k profilu za následujících okolností:
- Spustí se úplné uvolňování paměti.
- Obsazenost v oblasti Tenured je vyšší než 691 mb po sběru.
Žádost
Triggery SLA jsou založené na OpenTelemetry a iniciují profil, pokud jsou splněna určitá kritéria.
Každá konfigurace jednotlivých aktivačních událostí se vytvoří takto:
Name
– Jedinečný identifikátor aktivační události.Filter
– Filtruje požadavky, které jsou pro aktivační událost zajímavé.Aggregation
- Vypočítá poměr požadavků, které překročily danou prahovou hodnotu.Threshold
- Minimální hodnota (v milisekundách), při které se zjistí porušení požadavků.Minimum samples
- Minimální počet vzorků, které musí být shromážděny pro agregaci pro výrobu dat, je toto nastavení zabránit aktivaci malých velikostí vzorků.Window
- Klouzavé časové období (v milisekundách).
Threshold
- Prahová hodnota (procento) použitá na výstup agregace. Pokud je tato hodnota překročena, zahájí se profil.
Například následující scénář by aktivoval profil, pokud: více než 75 % požadavků na konkrétní koncový bod (/users/.*) trvá déle než 30 ms v 60sekundovém okně, když bylo shromážděno alespoň 100 vzorků.
Instalace
Následující kroky vás provedou povolením součásti profilace v agentu a konfigurací limitů prostředků, které v případě porušení zabezpečení aktivují profil.
Nakonfigurujte prahové hodnoty prostředků, které způsobují shromažďování profilu:
Přejděte do části Performance ->Profiler instance Application Insights.
Výběr aktivačních událostí
Nakonfigurujte požadované aktivační události procesoru, paměti nebo požadavku (pokud jsou povolené) a vyberte Použít.
Upozorňující
Java Profiler nepodporuje trigger vzorkování. Konfigurace tohoto nastavení nebude mít žádný vliv.
Po dokončení těchto kroků agent bude monitorovat využití prostředků vašeho procesu a po překročení prahové hodnoty aktivovat profil. Po aktivaci a dokončení profilu je možné ho zobrazit z instance Application Insights v části Performance ->Profiler . Z této obrazovky si můžete profil stáhnout, jakmile si stáhnete soubor záznamu JFR, můžete ho otevřít a analyzovat v nástroji podle vašeho výběru, například Oracle JDK Mission Control (JMC).
Konfigurace
Konfigurace nastavení triggeru profileru Java, jako jsou prahové hodnoty a období profilace, jsou nastavené v uživatelském rozhraní Application Insights v části Triggery profileru>výkonu>, jak je popsáno v instalaci.
Kromě toho je možné nakonfigurovat mnoho parametrů pomocí proměnných prostředí a konfiguračního applicationinsights.json
souboru.
Konfigurace obsahu profilu
Pokud chcete zadat vlastní konfiguraci profilu, upravte memoryTriggeredSettings
a cpuTriggeredSettings
zadejte cestu k .jfc
souboru s požadovanou konfigurací.
Profily lze generovat nebo upravovat v uživatelském rozhraní JDK Mission Control (JMC) v Window->Flight Recording Template Manager
nabídce a ovládání jednotlivých příznaků se nachází uvnitř Edit->Advanced
tohoto uživatelského rozhraní.
Proměnné prostředí
APPLICATIONINSIGHTS_PREVIEW_PROFILER_ENABLED
: logická hodnota (výchozí:true
)Povolí nebo zakáže funkci profilace. Ve výchozím nastavení je funkce povolená v rámci agenta (od agenta 3.4.9). I když je ale tato funkce povolená v rámci agenta, profily se neshromáždí, pokud nejsou povolené na portálu, jak je popsáno v instalaci.
Konfigurační soubor
Příklad konfigurace:
{
"preview": {
"profiler": {
"enabled": true,
"cpuTriggeredSettings": "profile-without-env-data",
"memoryTriggeredSettings": "profile-without-env-data",
"manualTriggeredSettings": "profile-without-env-data",
"enableRequestTriggering": true,
"periodicRecordingDurationSeconds": 60
}
}
}
memoryTriggeredSettings
Tato konfigurace se používá, pokud je požadován profil paměti.
Tato hodnota může být jedna z těchto hodnot:
profile-without-env-data
(výchozí hodnota). Profil s určitými citlivými událostmi je zakázaný. Podrobnosti najdete v části Upozornění.profile
.profile.jfc
Používá konfiguraci, která se dodává s JFR.- Cesta k vlastnímu konfiguračnímu souboru jfc v systému souborů,
/tmp/myconfig.jfc
například .
cpuTriggeredSettings
Tato konfigurace se používá, pokud je požadován profil procesoru.
Tato hodnota může být jedna z těchto hodnot:
profile-without-env-data
(výchozí hodnota). Profil s určitými citlivými událostmi je zakázaný. Podrobnosti najdete v části Upozornění.profile
.profile.jfc
Používá konfiguraci jfc, která se dodává s JFR.- Cesta k vlastnímu konfiguračnímu souboru jfc v systému souborů,
/tmp/myconfig.jfc
například .
manualTriggeredSettings
Tato konfigurace se používá, pokud je požadován ruční profil.
Tato hodnota může být jedna z těchto hodnot:
profile-without-env-data
(výchozí hodnota). Profil s určitými citlivými událostmi je zakázaný. Podrobnosti najdete v části Upozornění.profile
.profile.jfc
Používá konfiguraci jfc, která se dodává s JFR.- Cesta k vlastnímu konfiguračnímu souboru jfc v systému souborů,
/tmp/myconfig.jfc
například .
enableRequestTriggering
Určuje, jestli se profilace JFR má aktivovat na základě konfigurace požadavku.
Tato hodnota může být jedna z těchto hodnot:
true
Profilace se aktivuje, pokud dojde k porušení prahové hodnoty triggeru požadavku.false
(výchozí hodnota). Konfigurace požadavku neaktivuje profilaci.
periodicRecordingDurationSeconds
Doba trvání záznamu profilace v sekundách, kdy se relace profilace spustí pomocí tlačítka Profilovat . Výchozí hodnota je 120
.
Nejčastější dotazy
Co je profilace v Javě ve službě Azure Monitor Application Insights?
Java Profiler k profilování aplikace pomocí přizpůsobené konfigurace používá JFR (Java Flight Recorder).
Co je Java Flight Recorder?
Java Flight Recorder (JFR) je nástroj pro shromažďování dat profilace spuštěné aplikace Java. JFR je integrovaný do prostředí Java Virtual Machine (JVM) a slouží k řešení potíží s výkonem. Přečtěte si další informace o modulu Runtime Java SE JFR.
Jaký je dopad na cenu nebo licenční poplatky za povolení profilace v Javě pro App Insights?
Profilace v Javě je bezplatná funkce s Application Insights. Ceny služby Azure Monitor Application Insights jsou založené na nákladech na příjem dat.
Které informace o profilaci v Javě se shromažďují?
Profilace dat shromažďovaných JFR zahrnuje: data profilace metod a provádění, data uvolňování paměti a profily zámků.
Jak můžu používat profilaci v Javě v App Insights a vizualizovat data?
Záznam JFR můžete zobrazit a analyzovat pomocí preferovaného nástroje, například Java Mission Control (JMC).
Poskytují se doporučení k diagnostice výkonu a řešení profilace v Javě pro App Insights?
Diagnostika výkonu a doporučení je nová funkce, která je k dispozici hned po diagnostice Java Application Insights. Tuto funkci si můžete zaregistrovat ve verzi Preview. Nahrávku JFR si můžete prohlédnout pomocí JMC (Java Mission Control).
Jaký je rozdíl mezi on-demand a automatickou profilací v Javě v App Insights?
Na vyžádání je profilace aktivovaná uživatelem v reálném čase, zatímco automatické profilování je s předkonfigurovanými aktivačními událostmi.
Pro možnost profilování na vyžádání použijte profilaci . Profil teď okamžitě profiluje všechny agenty připojené k instanci Application Insights.
Automatizované profilování se aktivuje dosažením prahové hodnoty prostředku.
Které triggery profilace v Javě můžu nakonfigurovat?
Agent Java Application Insights v současné době podporuje monitorování spotřeby procesoru a paměti. Prahová hodnota procesoru je nakonfigurovaná jako procento všech dostupných jader na počítači. Paměť je aktuální obsazená oblast paměti Tenured (OldGen) s maximální možnou velikostí oblasti.
Jaké jsou požadavky na povolení profilace Java?
Projděte si požadavky v horní části tohoto článku.
Můžu pro aplikaci mikroslužeb používat profilaci Java?
Ano, pomocí JFR můžete profilovat prostředí JVM se spuštěnými mikroslužbami.