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?
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 DEBUG
rejestrowanie 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.