مراقبة تطبيق Mobile

مفاهيم

End-User Monitoring (EUM) أو Real-User Monitoring (RUM) ، هو أداة حيوية لفهم تجربة المستخدم الرقمي.

يدعم Infass مراقبة تطبيق التليفون المحمول عن طريق تحليل أوقات طلب عنوان URL الفعلية ، والتي تقدم معلومات تفصيلية عن تجربة التطبيق للمستخدمين ، وامكانية الرؤية بعمق في مسارات استدعاء التطبيق. يقوم حل مراقبة تطبيق Intana باستخدام برنامج iOS/Androdid ، الذي تم تركيبه على أنه اعتماد على تطبيقات التليفون المحمول.

تركيب

iOS

لتركيب برنامج iOS agent ، قم باستخدام Swift Package Manager (من خلال Xcode) أو CoootPods.

Swift Package Manager

  1. قم بفتح Xcode.
  2. حدد ملف-> مجموعات برامج سريعة-> اضافة ارتباطات مجموعة البرامج-> مشروع Xcode الخاص بك.
  3. أدخل مستودع تخزين https://github.com/instana/iOSAgent .

CooodPods

  1. في داخلكPodfileمحددات ، قم باضافة الأوامر :

    pod 'InstanaAgent'
    
  2. لتحميل الارتباطات ، تشغيلpod install.

اعداد

للحصول على مزيد من المعلومات عن عملية الاعداد ، ارجع الى برنامج iOS agent API.

أندرويد

مكون Android مركب بواسطة Gradle plugin ومكتبة SDK. قم بتطبيق البرنامج المساعد على وحدة برامج التطبيق الخاصة بك وقم باضافة SDK كتبعية.

متطلبات

Inpass Android plugin

في مستوى المشروع الخاص بكbuild.gradleملف:

buildscript {
   repositories {
        google()
        mavenCentral()
    }
   dependencies {
      classpath "com.instana:android-agent-plugin:5.2.1"
    }
}

في وحدة البرنامج الخاصة بك (applevel) Gradle file (عادةapp/build.gradle) بعد تطبيقcom.android.applicationالبرنامج المساعد :

apply plugin: 'com.android.application'
apply plugin: 'com.instana.android-agent-plugin'

Intana Android SDK

في مستوى المشروع الخاص بكbuild.gradleملف ،

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

في وحدة البرنامج الخاصة بك (applevel) Gradle file (عادةapp/build.gradle),

dependencies {
    implementation 'com.instana:android-agent-runtime:5.2.1'
}

توافق Java 1.8

ملحوظة : لا تكون هذه الخطوة مطلوبة اذا كنتminSdkVersionهو 24 أو أعلى

في وحدة البرنامج الخاصة بك (applevel) Gradle file (عادةapp/build.gradle),

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

تصريح طلب التصريح READ_PHONE_STATE (اختياري)

عندما يقوم المستخدم بالاتصال بشبكة الانترنت من خلال شبكة اتصالات خلوية ، يمكن أن يقوم Inca Agent بتسجيل النوع المحدد لشبكة الاتصالات الخلوية.

لاتاحة الابلاغ عن نوع شبكة الاتصال الخلوية ، يجب أن يقوم التطبيق الخاص بك بطلبREAD_PHONE_STATEالإذن. ارجع الى Request App Permissionsقسم في وثائق Adroid الرسمية.

اذا كان التطبيق الخاص بك لا يقوم بطلب التصريح أو اذا قام المستخدم برفضه ، فان Intellasor Agent لا يقوم بالابلاغ عن نوع شبكة الاتصال الخلوية.

بدء أساسي

في الفئة الخاصة بك ، التي تمتدApplication، استبدالYOUR_REPORTING_URLوYOUR_APP_KEYباستخدام قيم التوصيف التي قمت بايجادها في واجهة التعامل البيانية :

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        Instana.setup(
            this,
            InstanaConfig(
                key = "YOUR_APP_KEY",
                reportingURL = "YOUR_REPORTING_URL"
            )
        )
    }
}

استخدام متقدم

للحصول على كشف كامل باختيارات الاعداد للبدء ، قم بمشاهدة التتبع ، وتتبع مسار الطلب اليدوي ، وارجع الى برنامج API لبرنامج Adroid.

رد الفعل الأصلي

يقوم وكيل Native Native بتقديم الدعم لكل من أنظمة تشغيل Android و iOS.

اضافة الارتباط

قم بتشغيل الأمر التالي في الدليل الرئيسي للمشروع الخاص بك :

npm install @instana/react-native-agent --save

بدء أساسي

في صفكApp.jsملف ، استبدالYOUR_INSTANA_APP_KEYوYOUR_INSTANA_REPORTING_URLباستخدام قيم التوصيف التي قمت بايجادها في واجهة التعامل البيانية :

export default class App extends Component {
  componentDidMount() {
    Instana.setup(YOUR_INSTANA_APP_KEY, YOUR_INSTANA_REPORTING_URL);
  }
}

توصية

ونوصي بإضافةhttp://localhost:8081الى كشف عناوين URL التي تم تجاهلها لمنع البرنامج الوسيط من تتبع مسار الاتصال مع bundsmler :

Instana.setIgnoreURLsByRegex(["http:\/\/localhost:8081.*"]);

iOS

يجب أن يحتوي المشروع الخاص بك على ملف Swft واحد على الأقل (يمكن أن يكون خاليا).

اذا لم يكن لديك أي شيء ، قم بفتح مشروع Xcode الخاص بك في<YourReactNativeProject>/iosوقم باضافة ملف Swift خالي. دع Xcode يقوم بتكوين Bridging Header لك.

أندرويد

قم باستخدام نسخة Intana Andrid plugin المناسبة للنسخة الأصلية للنسخة الخاصة بك :

اتبع هذه الخطوات لاتاحة المراقبة الآلية الى HTTP :

  1. في/android/build.gradleملف:

    buildscript {
       dependencies {
           classpath "com.instana:android-agent-plugin:$INSTANA_ANDROID_PLUGIN_VERSION"
       }
    }
    
  2. في/android/app/build.gradleملف:

    apply plugin: 'com.android.application'
    apply plugin: 'com.instana.android-agent-plugin'
    
المشاكل المعروفة
Fetch (url)

اذا كان التطبيق الخاص بك يستخدمfetchلاستكمال طلبات شبكة الاتصال ، قد تجد التطبيق الخاص بك يتدرب على التشغيل في أي وقتfetchيتم استخدامه :No virtual method toString(Z)Ljava/lang/String;

اذا واجهت هذه المشكلة ، وحتى يتم حل المشكلة العليا (هنا و هنا) ، قم بتطبيق الحل التالي.

في ملف gradle الخاص بوحدة برامج Android الخاص بك (عادةapp/gradle.build):

dependencies {
    implementation "com.squareup.okhttp3:okhttp:4.3.1"
    implementation "com.squareup.okhttp3:okhttp-urlconnection:4.3.1"
}
Execution failed for task ':app:transformClassesWithDexBuilderForDevDebug'

اذا قمت بتطوير النسخة لتصرف Native 0.63.4 من نسخة سابقة ، تحقق من أنك تقوم باستخدام ،

استخدام متقدم

للحصول على كشف كامل باختيارات الاعداد للبدء ، قم بمشاهدة التتبع ، وهكذا ، ارجع الى اعادة تصرف Native agent API.

فطر

وكيل الأعلام يجلب الدعم لكل من منصات أندرويد و iOS.

لاحظ أن Flter Agent لا يتيح تتبع http الآلي. يجب أن يتم اعداد تتبع Http يدويا بواسطة مطور البرامج (يتم تقديم مثال في هذه المطبوعات الفنية)

اضافة مجموعة البرامج الى التطبيق الخاص بك

تكون مجموعة برامج Intana Agent Flent متاحة بواسطة pub.dev.

يمكنك اضافته الى التطبيق الخاص بك بنفس الطريقة المعتادة :

  1. فتحpubspec.yamlملف موجود داخل حافظة التطبيق ، واضافةinstana_agent:تحتdependencies.
  2. تركيبه من الوحدة الطرفية ، تشغيلflutter pub getأو
    • من Android Studio/IntelliJ : اضغط على Packages للحصول على شريط التصرف فيpubspec.yaml.
    • من كود VS : اضغط الحصول على مجموعات البرامج التي توجد بالجانب الأيمن من شريط التصرف فيpubspec.yaml.

بدء التشغيل

استقبال مجموعة البرامج في ملفات dart الخاصة بك :

import 'package:instana_agent/instana_agent.dart';

قم بايقاف واعادة بدء التطبيق ، اذا تطلب الأمر

قم باعداد Inteasce مرة واحدة في أقرب وقت ممكن. على سبيل المثال ، فيinitState()

@override
  void initState() {
    super.initState();
    InstanaAgent.setup(key: 'YOUR-INSTANA-KEY', reportingUrl: 'YOUR-REPORTING_URL');
  }

اذا كنت تنوي البناء الى iOS ، قم باعداد الحد الأدنى لنسخة بيئة التشغيل في${appFolder}/ios/Podspecمع أدنى قيمة ل ـ11.0.

تغييرات مشاهدة تتبع

في أي نقطة بعد بدء تشغيل agent agent :

import 'package:instana_agent/instana_agent.dart';

[...]

InstanaAgent.setView('Home');

تتبع طلبات Http

في أي نقطة بعد بدء تشغيل agent agent :

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());

نحن نوصي بخلق الخاص بكInstrumentedHttpClientامتدادhttp.BaseClientكما هو موضح في هذا المقطع ، على سبيل المثال :

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.instana.com"));
      httpClient.send(request);
   }

   [...]
}

استعراض بياني

ملخص

ويلخص الاستعراض البياني الرئيسي جميع البيانات الهامة في لمحة سريعة.

رؤية عامة للاستعراض البياني

طلبات HTTP

معرفة أي طلبات HTTP الخاصة بك تكون بطيئة أو مثيرة للمشاكل. تحديد مصدر معين يتيح رؤية في throughput وفي وقت متأخر ، ومعدلات خطأ وانهيج لاتاري.

تفاصيل طلب HTTP

مشاهدات

وكثيرا ما يكون من المهم عزل المشاهدات المحددة وتحليل أدائها ، وهو ما يشكل أيضا وسيلة رائعة للعثور على وجهة النظر التي تتسم بأكبر عدد من الازدحام. قم بتحديد مشاهدة معينة لعرض كل المقاييس التي تتعلق بها.

التفاصيل

تحليلات

وكما هو الحال مع امكانيات التحليل لعمليات التتبع والاتصالات ، يمكن استخدام المشاهدة التحليلية لبيانات مراقبة تطبيق الأجهزة النقالة للرد على أسئلة معينة لا يتم تغطيتها بواسطة الاستعراضات البيانية التي تم توصيفها مسبقا. تسمى قطعة واحدة من بيانات مراقبة التطبيق باسم منارة. توجد أنواع منارة قليلة ، هي ، بدء الجلسة وطلبات HTTP. للأغراض المناسبة ، يكون لكل نوع من أنواع الارشاد بند التجول الرئيسي الخاص به في مشاهدة التحليل.

يمكن استخدام بيانات Beacon لترشيح البيانات والمجموعة. التجميع المفترض يعتمد على نوع الارشاد المحدد. يمكن ازالة التجميع لفحص منارة منفردة تطابق مرشحات البيانات.

التفاصيل

البيانات الجغرافية

يتضمن هذا المنتج بيانات GeoLite2 التي تم تكوينها بواسطة Maxعقلي ، المتاحة من https://www.maxmind.com.