Rozwiązywanie problemów z usługą aplikacja systemu Azure Insights w projekcie internetowym Java

Ten artykuł zawiera rozwiązywanie typowych problemów w formacie Q&A dla języka Java 2.x usługi Application Insights.

Uwaga

Ten dokument dotyczy języka Java 2.x usługi Application Insights, który nie jest już zalecany.

Dokumentację najnowszej wersji można znaleźć w witrynie Application Insights Java 3.x.

Pytania lub problemy dotyczące usługi aplikacja systemu Azure Insights w języku Java? Oto kilka wskazówek.

Błędy kompilacji

W środowisku Eclipse lub Intellij Idea podczas dodawania zestawu SDK usługi Application Insights za pośrednictwem narzędzia Maven lub Gradle występują błędy sprawdzania poprawności kompilacji lub sum kontrolnych

Jeśli element wersji> zależności< używa wzorca zawierającego symbol wieloznaczny (na przykład <version>[2.0,)</version> w narzędziu Maven lub version:'2.+' Gradle), spróbuj określić określoną wersję, na przykład 2.6.4.

Brak danych

Pomyślnie dodano usługę Application Insights i uruchomiono moją aplikację, ale nigdy nie widziałem danych w portalu

  • Poczekaj około minuty, a następnie wybierz pozycję Odśwież. Wykresy odświeżają się okresowo, ale można je również odświeżać ręcznie. Interwał odświeżania zależy od zakresu czasu wykresu.

  • Upewnij się, że klucz instrumentacji został zdefiniowany w pliku ApplicationInsights.xml (w folderze resources w projekcie) lub skonfigurowano go jako zmienną środowiskową.

  • Sprawdź, czy w pliku XML nie ma <DisableTelemetry>true</DisableTelemetry> węzła.

  • W razie potrzeby otwórz porty TCP 80 i 443 w zaporze dla ruchu wychodzącego do dc.services.visualstudio.comusługi . Zobacz pełną listę wyjątków zapory.

  • Na tablicy startowej platformy Microsoft Azure przyjrzyj się mapie stanu usługi. Jeśli istnieją pewne wskazówki dotyczące alertów, poczekaj na powrót do stanu OK, a następnie zamknij i ponownie otwórz blok aplikacji usługi Application Insights.

  • Włącz rejestrowanie , dodając <element SDKLogger> w węźle głównym w pliku ApplicationInsights.xml (w folderze resources w projekcie). Następnie sprawdź, czy wpisy poprzedione wpisami AI: INFO/WARN/ERROR nie mają żadnych podejrzanych dzienników.

  • Upewnij się, że prawidłowy plik ApplicationInsights.xml został pomyślnie załadowany przez zestaw Java SDK. Sprawdź komunikaty wyjściowe konsoli pod kątem instrukcji "Plik konfiguracji został pomyślnie znaleziony".

  • Jeśli plik konfiguracji nie zostanie znaleziony, sprawdź komunikaty wyjściowe, aby zobaczyć, gdzie jest wyszukiwany plik konfiguracji. Upewnij się, że ApplicationInsights.xml znajduje się w jednej z tych lokalizacji wyszukiwania. Zgodnie z regułą plik konfiguracji można umieścić w pobliżu identyfikatorów JARs zestawu SDK usługi Application Insights. Na przykład w programie Tomcat folder będzie miał wartość WEB-INF/classes. Podczas opracowywania można umieścić ApplicationInsights.xml w folderze zasobów projektu internetowego.

  • Sprawdź stronę Problemy z usługą GitHub , aby uzyskać informacje o znanych problemach z zestawem SDK.

  • Upewnij się, że używasz tej samej wersji podstawowych, internetowych, agentów i aplikacji rejestrowania usługi Application Insights, aby uniknąć problemów z konfliktem wersji.

Uwaga

Ten artykuł został niedawno zaktualizowany w celu używania terminu Dzienniki usługi Azure Monitor zamiast usługi Log Analytics. Dane dziennika są nadal przechowywane w obszarze roboczym usługi Log Analytics i nadal są zbierane i analizowane przez tę samą usługę Log Analytics. Aktualizujemy terminologię, aby lepiej odzwierciedlała rolę dzienników w usłudze Azure Monitor. Aby uzyskać szczegółowe informacje , zobacz Zmiany terminologii usługi Azure Monitor .

Kiedyś widziałem dane, ale zostały zatrzymane

  • Czy osiągnięto miesięczny limit przydziału punktów danych? Otwórz pozycję Ustawienia>— limit przydziału i cennik , aby się tego dowiedzieć. Jeśli tak, możesz uaktualnić plan lub zapłacić za większą pojemność. Aby uzyskać więcej informacji, zobacz schemat cen.

  • Czy niedawno uaktualniono zestaw SDK? Upewnij się, że w katalogu projektu znajdują się tylko pliki jar unikatowego zestawu SDK. Nie powinny istnieć dwie różne wersje zestawu SDK.

  • Czy patrzysz na prawidłowy zasób sztucznej inteligencji? Pamiętaj, aby dopasować wartość iKey aplikacji do zasobu, w którym oczekujesz telemetrii. Powinny być takie same.

Nie widzę wszystkich danych, które oczekuję

  • Otwórz stronę Użycie i szacowany koszt i sprawdź, czy próbkowanie działa. (Transmisja w 100% oznacza, że próbkowanie nie działa). Usługę Application Insights można ustawić tak, aby akceptowała tylko ułamek danych telemetrycznych pochodzących z aplikacji. To ustawienie ułatwia zachowanie miesięcznego limitu przydziału danych telemetrycznych.

  • Czy masz włączone próbkowanie zestawu SDK? Jeśli tak, dane będą próbkowane według szybkości określonej dla wszystkich odpowiednich typów.

  • Czy używasz starszej wersji zestawu Java SDK? Począwszy od wersji 2.0.1 wprowadziliśmy mechanizm odporności na uszkodzenia do obsługi sporadycznych awarii sieci i zaplecza, a także trwałości danych na dyskach lokalnych.

  • Sprawdź, czy nadmierna telemetria spowodowała ograniczanie przepustowości. Po włączeniu rejestrowania INFORMACJI zostanie wyświetlony komunikat dziennika "Aplikacja jest ograniczona". Nasz bieżący limit wynosi około 32 000 elementów telemetrii na sekundę.

Agent Java nie może przechwycić danych zależności

  • Czy skonfigurowano agenta Java?

  • Upewnij się, że plik jar agenta java i plik AI-Agent.xml znajdują się w tym samym folderze.

  • Upewnij się, że zależność, którą próbujesz automatycznie zebrać, jest obsługiwana w przypadku automatycznej kolekcji. Obecnie obsługujemy tylko kolekcje zależności MySQL, Microsoft SQL Server, Oracle DB i Azure Cache for Redis.

Brak danych użycia

Widzę dane dotyczące żądań i czasów odpowiedzi, ale nie widzę widoku strony, przeglądarki ani danych użytkownika

Pomyślnie skonfigurowano aplikację do wysyłania danych telemetrycznych z serwera. Następnym krokiem jest skonfigurowanie stron internetowych do wysyłania danych telemetrycznych z przeglądarki internetowej.

Alternatywnie, jeśli klient jest aplikacją na telefonie lub innym urządzeniu, możesz wysłać z niej dane telemetryczne.

Użyj tego samego klucza instrumentacji, aby skonfigurować dane telemetryczne klienta i serwera. Dane zostaną wyświetlone w tym samym zasobie usługi Application Insights i będzie można skorelować zdarzenia z klienta i serwera.

Wyłączanie telemetrii

Jak wyłączyć zbieranie danych telemetrycznych?

Postępuj zgodnie z jednym z następujących rozwiązań:

  • Wyłącz zbieranie w kodzie:

    TelemetryConfiguration config = TelemetryConfiguration.getActive();
    config.setTrackingIsDisabled(true);
    
  • ZaktualizujApplicationInsights.xml (w folderze resources w projekcie). Dodaj następujący element XML w węźle głównym:

    <DisableTelemetry>true</DisableTelemetry>
    

    Jeśli używasz metody XML, musisz ponownie uruchomić aplikację po zmianie wartości.

Zmienianie obiektu docelowego

Jak mogę zmienić zasób platformy Azure, do którego mój projekt wysyła dane?

  • Pobierz klucz instrumentacji nowego zasobu.

  • Jeśli do projektu dodano usługę Application Insights przy użyciu zestawu narzędzi Azure Toolkit for Eclipse, kliknij prawym przyciskiem myszy projekt internetowy, wybierz pozycję Azure>Configure Application Insights, a następnie zmień klucz.

  • Jeśli klucz instrumentacji został skonfigurowany jako zmienna środowiskowa, zaktualizuj wartość zmiennej środowiskowej przy użyciu nowego klucza iKey.

  • W przeciwnym razie zaktualizuj klucz w ApplicationInsights.xml w folderze resources dla projektu.

Debugowanie danych z zestawu SDK

Jak mogę dowiedzieć się, co robi zestaw SDK?

Aby uzyskać więcej informacji o tym, co dzieje się w interfejsie API, dodaj <element SDKLogger> w węźle głównym pliku konfiguracji ApplicationInsights.xml .

ApplicationInsights.xml

W elemencie <SDKLogger> możesz również poinstruować rejestratora, aby wyprowadzał dane wyjściowe do pliku:

<SDKLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
    <Level>TRACE</Level>
    <UniquePrefix>AI</UniquePrefix>
    <BaseFolderPath>C:/agent/AISDK</BaseFolderPath>
</SDKLogger>

Spring Boot starter

Aby włączyć rejestrowanie zestawu SDK za pomocą aplikacji spring boot przy użyciu startera Spring Boot usługi Application Insights, dodaj następujące wiersze do pliku application.properties :

azure.application-insights.logger.type=file
azure.application-insights.logger.base-folder-path=C:/agent/AISDK
azure.application-insights.logger.level=trace

Alternatywnie możesz wydrukować w standardowym strumieniu błędów:

azure.application-insights.logger.type=console
azure.application-insights.logger.level=trace

Agent języka Java

Aby włączyć rejestrowanie agenta JVM, zaktualizuj plik AI-Agent.xml:

<AgentLogger type="FILE"><!-- or "CONSOLE" to print to stderr -->
    <Level>TRACE</Level>
    <UniquePrefix>AI</UniquePrefix>
    <BaseFolderPath>C:/agent/AIAGENT</BaseFolderPath>
</AgentLogger>

Właściwości wiersza polecenia języka Java

Od wersji 2.4.0

Aby włączyć rejestrowanie przy użyciu opcji wiersza polecenia zamiast zmieniania plików konfiguracji, uruchom następujące polecenie:

java -Dapplicationinsights.logger.file.level=trace \
    -Dapplicationinsights.logger.file.uniquePrefix=AI \
    -Dapplicationinsights.logger.baseFolderPath="C:/my/log/dir" \
    -jar MyApp.jar

Możesz też uruchomić następujące polecenie, aby wydrukować w standardowym strumieniu błędów:

java -Dapplicationinsights.logger.console.level=trace -jar MyApp.jar

Ekran startowy platformy Azure

Patrzę na Azure Portal. Czy mapa mówi mi coś o mojej aplikacji?

Nie, pokazuje kondycję serwerów platformy Azure na całym świecie.

Jak mogę znaleźć dane dotyczące mojej aplikacji z tablicy startowej platformy Azure (ekranu głównego)?

Zakładając , że skonfigurowano aplikację dla usługi Application Insights, wybierz pozycję Przeglądaj>usługę Application Insights, a następnie wybierz zasób aplikacji utworzony dla aplikacji. Aby szybciej się tam dostać w przyszłości, przypnij aplikację do tablicy startowej.

Serwery intranetowe

Czy mogę monitorować serwer w intranecie?

Tak, pod warunkiem, że serwer może wysyłać dane telemetryczne do portalu usługi Application Insights za pośrednictwem publicznego Internetu.

Może być konieczne otwarcie niektórych portów wychodzących w zaporze serwera , aby umożliwić zestawowi SDK wysyłanie danych do portalu.

Przechowywanie danych

Jak długo dane są przechowywane w portalu? Czy jest bezpieczny?

Zobacz Przechowywanie danych i prywatność.

Rejestrowanie debugowania

Usługa Application Insights używa programu org.apache.http. Ta przestrzeń nazw jest przenoszona w ramach podstawowych plików jar usługi Application Insights w przestrzeni com.microsoft.applicationinsights.core.dependencies.httpnazw . Ta relokacja umożliwia usłudze Application Insights obsługę scenariuszy, w których istnieją różne wersje tego samego org.apache.http kodu w jednej bazie kodu.

Uwaga

Jeśli włączysz DEBUGrejestrowanie na poziomie dla wszystkich przestrzeni nazw w aplikacji, zostanie ono uznane przez wszystkie moduły wykonujące (w tym org.apache.http zmieniono nazwę na com.microsoft.applicationinsights.core.dependencies.http). Usługa Application Insights nie będzie mogła zastosować filtrowania dla tych wywołań, ponieważ wywołanie dziennika jest wykonywane przez bibliotekę apache. DEBUGRejestrowanie na poziomie generuje znaczną ilość danych dziennika i nie jest zalecane w przypadku wystąpień produkcyjnych na żywo.

Następne kroki

Skonfiguruję usługę Application Insights dla mojej aplikacji serwera Java. Co jeszcze mogę zrobić?

Uzyskiwanie pomocy

Zastrzeżenie dotyczące innych firm

Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie udziela żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, w odniesieniu do wydajności lub niezawodności tych produktów.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii platformy Azure.