Datadog

كيفية دمج Datadog مع OpenReplay ومشاهدة أخطاء الواجهة الخلفية جنبًا إلى جنب مع عمليات إعادة تشغيل الجلسات.

Datadog

كيفية دمج Datadog مع OpenReplay ومشاهدة أخطاء الواجهة الخلفية جنبًا إلى جنب مع تسجيلات الجلسات.

1. إنشاء API Key و Application Key الخاصة بـ Datadog

Section titled 1. إنشاء API Key و Application Key الخاصة بـ Datadog

انتقل إلى Datadog > Integrations > APIs وأنشئ API Key، أو استخدم المفتاح الموجود مسبقًا.

Datadog API Key

في الصفحة نفسها، انقر على Application Keys وأنشئ application key جديدًا.

Datadog Application Key

2. تفعيل التكامل في OpenReplay

Section titled 2. تفعيل التكامل في OpenReplay

الصق API Key و Application Key الخاصين بـ Datadog في لوحة تحكم OpenReplay ضمن ‘Preferences > Integration’.

Datadog Integration in OpenReplay

3. تمرير openReplaySessionToken

Section titled 3. تمرير openReplaySessionToken

لربط حدث Datadog بجلسة المستخدم المسجَّلة، يجب تمرير رمز فريد من الواجهة الأمامية إلى الواجهة الخلفية في كل طلب ترغب في تتبعه. يمكن القيام بذلك باستخدام ترويسة HTTP مخصصة. في المثال أدناه، نستخدم الدالة fetch لإرسال تلك الترويسة.

const headers = {
  Accept: 'application/json',
  'Content-Type': 'application/json',
};
if (tracker.getSessionToken()) { // or window.OpenReplay instead of tracker if you're using the snippet
  headers['X-OpenReplay-SessionToken'] = tracker.getSessionToken(); // Inject openReplaySessionToken
}
fetch('www.your-backend.com', {
  'GET',
  headers,
});

لكي يتمكن OpenReplay من ربط إدخال سجل Datadog بجلسة المستخدم المسجَّلة، يجب تمرير رمز فريد إلى كل خطأ في الواجهة الخلفية ترغب في تتبعه.

فيما يلي مثال بلغة Python باستخدام Monkey Patching.

import sys
import traceback
#...
old_tb = traceback.print_exception
old_f = sys.stdout
old_e = sys.stderr
OPENREPLAY_SESSION_TOKEN = None

class F:
    def write(self, x):
        if OPENREPLAY_SESSION_TOKEN is not None and x != '\n':
            old_f.write(f"[openReplaySessionToken={OPENREPLAY_SESSION_TOKEN}] {x}")
        else:
            old_f.write(x)

    def flush(self):
        pass

def tb_print_exception(etype, value, tb, limit=None, file=None, chain=True):
    if OPENREPLAY_SESSION_TOKEN is not None:
        value = type(value)(f"[openReplaySessionToken={OPENREPLAY_SESSION_TOKEN}] " + str(value))
    old_tb(etype, value, tb, limit, file, chain)

traceback.print_exception = tb_print_exception

sys.stderr = F()

اسم الوسم openReplaySessionToken حساس لحالة الأحرف.

إذا واجهت أي مشكلات، تواصل معنا عبر Slack أو تفقّد المنتدى الخاص بنا واحصل على المساعدة من مجتمعنا.