Aplikacje mobilne
Monitoring
Instana obsługuje monitorowanie aplikacji mobilnych, analizując rzeczywiste czasy żądań URL, co pozwala uzyskać szczegółowe informacje na temat doświadczeń użytkowników aplikacji i uzyskać wgląd w ścieżki wywołań aplikacji. Rozwiązanie do monitorowania aplikacji Instana działa z użyciem agenta iOS/Android, który jest instalowany jako zależność od aplikacji mobilnych.
Monitorowanie użytkownika końcowego (EUM) lub monitorowanie użytkownika rzeczywistego (Real-User Monitoring-RUM) jest ważnym narzędziem umożliwiającym zrozumienie interakcji użytkownika z aplikacjami mobilnymi.
- Instalacja
- panele kontrolne
- Analiza
- Dane geograficzne
Instalacja
iOS
Aby zainstalować agenta iOS , należy użyć programu Swift Package Manager (przez Xcode) lub CocoaPods.
Wymagania
- iOS 11 lub nowszy
- swift 5.1 lub nowszy
Menedżer pakietów Swift
- Otwórz kod Xcode.
- Wybierz opcję Plik-> Pakiety Swift-> Dodaj zależność od pakietu-> Projekt Xcode.
- Wprowadź repozytorium produktu https://github.com/instana/iOSAgent .
CocoaPods
W specyfikacji
Podfiledodaj komendy:pod 'InstanaAgent'Aby pobrać zależności, uruchom plik
pod install.
Konfiguracja produktu 
Więcej informacji na temat procesu konfiguracji zawiera sekcja Interfejs API agenta systemuiOS.
Android
Agent dla systemu Android składa się z wtyczki Gradle i biblioteki SDK. Zastosuj wtyczkę do modułu aplikacji i dodaj pakiet SDK jako zależność.
Wymagania
- Android 4.1+ (poziom interfejsu API 16 +)
- Java 8 +
- Gradle 7.3.3+
- AndroidX
- targetSdk 33 +
Uwaga: Aby w projekcie użyć agenta Gradle w wersji starszej niż 7.3.3 , należy użyć agenta systemu Android w wersji starszej niż 6.0.0.
Wtyczka Instana dla systemu Android
W pliku build.gradle na poziomie projektu dodaj następujący kod:
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath "com.instana:android-agent-plugin:6.0.0"
}
}
W pliku modułu (na poziomie aplikacji) Gradle (zwykle app/build.gradle) po zastosowaniu wtyczki com.android.application dodaj następujący kod:
apply plugin: 'com.android.application'
apply plugin: 'com.instana.android-agent-plugin'
Instana Android SDK
W pliku build.gradle na poziomie projektu dodaj następujący kod:
allprojects {
repositories {
google()
mavenCentral()
}
}
W pliku modułu (na poziomie aplikacji) Gradle (zwykle app/build.gradle) dodaj następujący kod:
dependencies {
implementation 'com.instana:android-agent-runtime:6.0.0'
}
Zgodność środowiska
Java 1.8
Uwaga: Ten krok należy wykonać, jeśli wartość parametru minSdkVersion jest niższa niż 24.
W pliku modułu (na poziomie aplikacji) Gradle (zwykle app/build.gradle) dodaj następujący kod:
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Żądanie uprawnienia READ_PHONE_STATE (opcjonalne)
Gdy użytkownik uzyskuje dostęp do Internetu przez sieć komórkową, agent Instana może zgłosić konkretny typ sieci komórkowej.
Aby włączyć raportowanie typu sieci komórkowej, aplikacja musi mieć uprawnienie READ_PHONE_STATE . Więcej informacji na temat żądania uprawnień zawiera sekcja Request App Permissions w oficjalnej dokumentacji systemu Android.
Jeśli aplikacja nie żąda uprawnień lub jeśli użytkownik odmawia uprawnień, agent Instana nie zgłasza typu sieci komórkowej.
Podstawowe inicjowanie
W klasie, która rozszerza klasę Application, należy zastąpić wartości YOUR_REPORTING_URL i YOUR_APP_KEY wartościami konfiguracyjnymi, które znajdują się na panelu kontrolnym Instana:
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
Instana.setup(
this,
InstanaConfig(
key = "YOUR_APP_KEY",
reportingURL = "YOUR_REPORTING_URL"
)
)
}
}
Użycie zaawansowane
Pełną listę opcji inicjowania, śledzenia widoku i innych opcji zawiera sekcja Interfejs API agenta systemu Android.
React Native
Agent Rreaguj rodzimy zapewnia obsługę zarówno platform Android, jak i iOS .
Wymagania
Patrz Instana React Native Agent (Instana React Native Agent).
Dodaj zależność
Uruchom następującą komendę w katalogu głównym projektu:
npm install @instana/react-native-agent --save
Podstawowe inicjowanie
W pliku klasy App.js zastąp wartości YOUR_INSTANA_APP_KEY i YOUR_INSTANA_REPORTING_URL wartościami konfiguracyjnymi, które znajdują się na panelu kontrolnym Instana:
export default class App extends Component {
componentDidMount() {
Instana.setup(YOUR_INSTANA_APP_KEY, YOUR_INSTANA_REPORTING_URL, null);
}
}
Zalecenie
Aby zapobiec komunikowaniu się śledzenia agenta Instana z pakunkiem Metro, należy dodać parametr http://localhost:8081 do listy ignorowanych adresów URL:
Instana.setIgnoreURLsByRegex(['http://localhost:8081.*']);
iOS
Projekt powinien zawierać co najmniej jeden plik Swift (może być pusty).
Jeśli nie masz żadnych plików Swift, otwórz projekt Xcode w katalogu <YourReactNativeProject>/ios , a następnie dodaj pusty plik Swift. Pozwól Xcode utworzyć nagłówek mostu dla Ciebie.
Android
Użyj wtyczki Instana Android w wersji odpowiedniej dla Twojej wersji React Native:
- Reaguj na rodzimą wersję 0.63.3 lub wcześniejszą: użyj wtyczki Instana dla systemu Android 1.5.3
- Reaguj na rodzimą wersję 0.63.4 lub nowszą: użyj wtyczki Instana dla systemu Android 5.2.2
Aby włączyć automatyczne monitorowanie HTTP, wykonaj następujące kroki:
W pliku
/android/build.gradledodaj następujący kod:buildscript { dependencies { classpath "com.instana:android-agent-plugin:$INSTANA_ANDROID_PLUGIN_VERSION" } }W pliku
/android/app/build.gradledodaj następujący kod:apply plugin: 'com.android.application' apply plugin: 'com.instana.android-agent-plugin'
Znane problemy
fetch (adres URL)
Jeśli aplikacja używa serwera fetch do obsługi żądań sieciowych, może wystąpić awaria aplikacji w czasie wykonywania, gdy używana jest baza danych fetch : No virtual method toString(Z)Ljava/lang/String;
Ten problem powinien zostać rozwiązany przez problemy z produktem React Native (27250 i 28425). W przypadku napotkania tego problemu można zastosować następujące obejście.
W pliku Gradle na poziomie modułu systemu Android (zwykle app/gradle.build) dodaj następujący kod:
dependencies {
implementation "com.squareup.okhttp3:okhttp:4.3.1"
implementation "com.squareup.okhttp3:okhttp-urlconnection:4.3.1"
}
Execution failed for task ':app:transformClassesWithDexBuilderForDevDebug'
Jeśli przeprowadzono aktualizację do React Native 0.63.4 z poprzedniej wersji, należy sprawdzić, czy
- Wtyczka Instana dla systemu Android 4.5.3
- Gradle 6.5:
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zipwandroid/gradle/wrapper/gradle-wrapper.properties - Android Gradle 5.2.2:
classpath("com.android.tools.build:gradle:4.1.0")wandroid/build.gradle
Użycie zaawansowane
Pełną listę opcji inicjowania, śledzenia widoku i innych opcji zawiera sekcja React Native agent API.
trzepotanie
Agent Flutter zapewnia obsługę zarówno platform Android, jak i iOS .
Uwaga: Agent Flutter nie udostępnia automatycznego śledzenia HTTP. Śledzenie HTTP musi być ręcznie skonfigurowane przez programistę (przykład znajduje się w tej dokumentacji).
Wymagania
- Trzepotanie w wersji 1.20.0 lub nowszej
- Wersja dart od 2.12.0 do 3.0.0
Dodawanie pakietu do aplikacji
Pakiet Flutter agenta Instana jest dostępny pod adresem pub.dev.
Aby dodać pakiet do aplikacji, wykonaj następujące kroki:
Otwórz plik
pubspec.yamlznajdujący się w folderze aplikacji, a następnie dodaj plikinstana_agent:w katalogudependencies.Zainstaluj pakiet, używając jednej z następujących metod:
- Z poziomu konsoli uruchom komendę
flutter pub get. - W programie Android Studio lub IntelliJ: kliknij opcję Pakiety pobierz na wstążce działania
pubspec.yaml. - Z poziomu kodu VS: kliknij opcję Pobierz pakiety na wstążce działania produktu
pubspec.yaml.
- Z poziomu konsoli uruchom komendę
Inicjowanie
Zaimportuj pakiet do swoich plików dart:
import 'package:instana_agent/instana_agent.dart';
W razie potrzeby zatrzymaj i zrestartuj aplikację.
Ustaw Instana tak szybko jak to możliwe. Na przykład w pliku initState()należy dodać następujący kod:
@override
void initState() {
super.initState();
InstanaAgent.setup(key: 'YOUR-INSTANA-KEY', reportingUrl: 'YOUR-REPORTING_URL');
}
Jeśli planowane jest budowanie dla systemu iOS, należy skonfigurować minimalną wersję platformy w pliku ${appFolder}/ios/Podspec , podając minimalną wartość 11.0.
Śledzenie zmian widoku
W dowolnym momencie po zainicjowaniu agenta Instana dodaj wpis InstanaAgent.setView('Home');:
import 'package:instana_agent/instana_agent.dart';
[...]
InstanaAgent.setView('Home');
Śledzenie żądań HTTP
W dowolnym momencie po zainicjowaniu agenta Instana uruchom przechwytywanie żądań HTTP:
import 'package:instana_agent/instana_agent.dart';
[...]
InstanaAgent.startCapture(url: 'https://example.com/success', method: 'GET').then((marker) => marker
..responseStatusCode = 200
..responseSizeBody = 1000
..responseSizeBodyDecoded = 2400
..finish());
Utwórz własne InstrumentedHttpClient rozszerzanie http.BaseClient , jak pokazano w poniższym przykładzie:
class _InstrumentedHttpClient extends BaseClient {
_InstrumentedHttpClient(this._inner);
final Client _inner;
@override
Future<StreamedResponse> send(BaseRequest request) async {
final Marker marker = await InstanaAgent.startCapture(url: request.url.toString(), method: request.method);
StreamedResponse response;
try {
response = await _inner.send(request);
marker
..responseStatusCode = response.statusCode
..responseSizeBody = response.contentLength
..backendTracingID = BackendTracingIDParser.fromHeadersMap(response.headers);
} finally {
await marker.finish();
}
return response;
}
}
class _MyAppState extends State<MyApp> {
[...]
Future<void> httpRequest() async {
final _InstrumentedHttpClient httpClient = _InstrumentedHttpClient(Client());
final Request request = Request("GET", Uri.parse("https://www.ibm.com/products/instana"));
httpClient.send(request);
}
[...]
}
Panele kontrolne
Podsumowanie
Główny panel kontrolny podsumowuje wszystkie ważne dane w skrócie.

Żądania HTTP
Dowiedz się, które żądania HTTP są powolne lub problematyczne. Wybór konkretnego źródła zapewnia wgląd w przepustowość i opóźnienie oraz szybkość błędów i analizę opóźnień.

Widoki
Często ważne jest wyodrębnienie konkretnych widoków i przeanalizowanie ich wydajności, co jest również świetnym sposobem na znalezienie widoku o największym natężeniu ruchu. Wybierz konkretny widok, aby wyświetlić wszystkie wielkości mierzone dla tego widoku.

Inteligentne alerty
Wyświetl listę wszystkich skonfigurowanych alertów inteligentnych. Kliknij alert, aby wyświetlić jego konfigurację, zmodyfikować go lub wyświetlić jego historię podwersji. W razie potrzeby można również wyłączyć lub usunąć alert.
Więcej informacji na temat dodawania alertu zawiera sekcja Inteligentne alerty.
Analizy
Podobnie jak w przypadku funkcji analitycznych dla wywołań i śledzenia, widok analityczny dla danych monitorowania aplikacji mobilnych może być używany do odpowiadania na konkretne pytania, które nie są objęte wstępnie skonfigurowanymi panelami kontrolnymi. Pojedynczy fragment danych monitorowania aplikacji jest nazywany sygnalizator. Istnieje kilka typów sygnalizatorów, tj. żądania uruchomienia sesji i żądania HTTP. Dla wygody każdy typ sygnalizatora ma swoją główną pozycję nawigacji w widoku analizy.
Dane sygnalizacyjne mogą być używane do filtrowania i grupowania. Grupowanie domyślne zależy od wybranego typu sygnalizatora. Grupowanie można usunąć w celu sprawdzenia pojedynczego sygnalizatora, który jest zgodny z filtrami.

Dane geograficzne
Instana odwzorowuje adresy IP użytkowników na dane geograficzne na podstawie bazy danych GeoLite2 , która jest dostarczana przez MaxMind. Adresy IP są gromadzone za pomocą odwrotnego serwera proxy. W przypadku instalacji z własnym hostem skonfiguruj adres URL punktu końcowego monitorowania użytkownika jako adres URL raportowania dla agenta. W przeciwnym razie adresy IP nie będą gromadzone, a powiązane informacje o szczegółach geograficznych nie będą dostępne.