Udostępnij za pośrednictwem


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

Ten artykuł zawiera rozwiązania rozwiązywania typowych problemów w formacie pytań i odpowiedzi 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ę dotyczącą 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 narzędzia Gradle otrzymuję błędy sprawdzania poprawności kompilacji lub sumy kontrolnej

Jeśli element wersji> zależności <używa wzorca zawierającego symbole wieloznaczne (na przykład <version>[2.0,)</version> w narzędziu Maven lub version:'2.+' w narzędziu 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 są okresowo odświeżane, ale można również odświeżać ręcznie. Interwał odświeżania zależy od zakresu czasu wykresu.

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

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

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

  • Na tablicy startowej platformy Microsoft Azure przyjrzyj się mapie stanu usługi. Jeśli istnieją pewne wskazania alertów, poczekaj, aż powróci do ok, a następnie zamknij i otwórz ponownie 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 są poprzedzone AI: INFO/WARN/ERROR wszelkimi podejrzanymi dziennikami.

  • Upewnij się, że prawidłowy plik ApplicationInsights.xml został pomyślnie załadowany przez zestaw JAVA SDK. Sprawdź komunikaty wyjściowe konsoli dla 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. Jako reguła kciuka możesz umieścić plik konfiguracji w pobliżu zestawów SDK usługi Application Insights. Na przykład w usłudze Tomcat folder będzie web-INF /classes. Podczas programowania można umieścić ApplicationInsights.xml w folderze resources projektu internetowego.

  • Sprawdź stronę problemów z usługą GitHub, aby zapoznać się ze znanymi problemami z zestawem SDK.

  • Upewnij się, że używasz tej samej wersji podstawowych, internetowych, agentów i funkcji dołączających do rejestrowania, aby uniknąć problemów z konfliktami wersji.

Uwaga 16.

Ten artykuł został niedawno zaktualizowany, aby użyć terminu Dzienniki usługi Azure Monitor zamiast usługi Log Analytics. Dane dzienników 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ć rolę dzienników w usłudze Azure Monitor. Aby uzyskać szczegółowe informacje, zobacz Zmiany terminologii usługi Azure Monitor.

Widziałem dane, ale został zatrzymany

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

  • Czy zestaw SDK został niedawno uaktualniony? Upewnij się, że w katalogu projektu znajdują się tylko unikatowe pliki jar zestawu SDK. Nie powinno istnieć dwie różne wersje zestawu SDK.

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

Nie widzę wszystkich oczekiwanych danych

  • Otwórz stronę Użycie i szacowany koszt i sprawdź, czy próbkowanie jest wykonywane. (100% transmisji oznacza, że próbkowanie nie działa). Usługę Application Insights można ustawić tak, aby akceptowała tylko część danych telemetrycznych pochodzących z aplikacji. To ustawienie pomaga zachować miesięczny limit 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 w celu obsługi sporadycznych awarii sieci i zaplecza, a także trwałości danych na dyskach lokalnych.

  • Sprawdź, czy nadmierne dane telemetryczne spowodowały ograniczanie przepustowości. Jeśli włączysz rejestrowanie INFORMACJI, zobaczysz komunikat dziennika "Aplikacja jest ograniczona". Nasz bieżący limit wynosi około 32 000 elementów telemetrii na sekundę.

Agent języka Java nie może przechwytywać danych zależności

  • Czy skonfigurowano agenta Języka Java?

  • Upewnij się, że zarówno plik jar agenta Java, jak i plik AI-Agent.xml znajdują się w tym samym folderze.

  • Upewnij się, że zależność, którą próbujesz zbierać automatycznie, jest obsługiwana w przypadku automatycznego zbierania. 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 brak widoku strony, przeglądarki lub danych użytkownika

Pomyślnie skonfigurowaliśmy aplikację do wysyłania danych telemetrycznych z serwera. Teraz następnym krokiem jest skonfigurowanie stron internetowych w celu wysyłania danych telemetrycznych z przeglądarki internetowej.

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

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

Wyłączanie telemetrii

Jak mogę wyłączyć zbieranie danych telemetrycznych?

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

  • Wyłącz kolekcję w kodzie:

    TelemetryConfiguration config = TelemetryConfiguration.getActive();
    config.setTrackingIsDisabled(true);
    
  • Zaktualizuj ApplicationInsights.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 miejsca docelowego

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

  • Pobierz klucz instrumentacji nowego zasobu.

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

  • Jeśli klucz instrumentacji został skonfigurowany jako zmienna środowiskowa, pamiętaj o zaktualizowaniu wartości 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 sprawdzić, co robi zestaw SDK?

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

ApplicationInsights.xml

W elemecie <SDKLogger> można również poinstruować rejestratora, aby wyświetlił 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>

Szablon startowy Spring Boot

Aby włączyć rejestrowanie zestawu SDK z aplikacjami spring boot przy użyciu szablonu startowego Application Insights Spring Boot, 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żna drukować do standardowego strumienia błędów:

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

Agent środowiska 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 zmiany 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 wyświetlić standardowy strumień błędów:

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

Ekran startowy platformy Azure

Przeglądam witrynę Azure Portal. Czy mapa informuje mnie 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 (ekran główny)?

Zakładając, że aplikacja została skonfigurowana dla usługi Application Insights, wybierz pozycję Przeglądaj>usługę Application Insights, a następnie wybierz zasób aplikacji utworzony dla aplikacji. Aby przyspieszyć pracę 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 to bezpieczne?

Zobacz Przechowywanie i prywatność danych.

Rejestrowanie debugowania

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

Uwaga 16.

Jeśli włączysz DEBUGrejestrowanie na poziomie -dla wszystkich przestrzeni nazw w aplikacji, zostanie ono uznane przez wszystkie moduły wykonawcze (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. DEBUG- rejestrowanie na poziomie generuje znaczną ilość danych dziennika i nie jest zalecane w przypadku wystąpień produkcyjnych na żywo.

Następne kroki

Skonfigurowałem usługę Application Insights dla mojej aplikacji serwera Java. Co jeszcze można zrobić?

Uzyskaj pomoc

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 na temat platformy Azure.