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.

CPU

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ů.

Snímek obrazovky s ukázkou triggeru požadavku

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:

  1. Přejděte do části Performance ->Profiler instance Application Insights.

    Snímek obrazovky s tlačítkem Profiler v podokně Výkon

Upozorňující

Tlačítko Trasování profileru v pravém dolním rohu není podporováno pro Javu.

  1. Výběr aktivačních událostí

  2. Nakonfigurujte požadované aktivační události procesoru, paměti nebo požadavku (pokud jsou povolené) a vyberte Použít.

    Snímek obrazovky s nastavením triggeru

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).

Snímek obrazovky s funkcemi a nastavením stránky profileru

Konfigurace

Konfigurace nastavení triggeru profileru Java, jako jsou prahové hodnoty a období profilace, jsou nastavené v uživatelském rozhraní Application Insights v části >, 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 memoryTriggeredSettingsa 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.jfcnapří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.jfcnapří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.jfcnapří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.

Další kroky

  • Chcete-li si prohlédnout nejčastější dotazy (FAQ), podívejte se na Java Profiler FAQ.