CloudWatch
كيفية دمج CloudWatch مع OpenReplay وعرض أخطاء الواجهة الخلفية جنبًا إلى جنب مع إعادة تشغيل الجلسات.
1. إنشاء حساب خدمة
Section titled 1. إنشاء حساب خدمة- سجّل الدخول إلى حساب AWS الخاص بك.
- انتقل إلى لوحة تحكم IAM.
- انقر على Users.
- انقر على زر Add user.
- عيّن الاسم إلى “openreplay_cw”.
- في نوع الوصول، اختر Programmatic access.
- انقر على زر Next: Permissions.
- اختر Attach existing policies directly
- في قائمة الأذونات، اختر CloudWatchReadOnlyAccess.
- انقر على زر Next: Tags.
- انقر على زر Next: Review.
- انقر على زر Create user.
- انسخ
Access key IDوSecret access key.
2. تفعيل CloudWatch في OpenReplay
Section titled 2. تفعيل CloudWatch في OpenReplayضع Access key ID و Secret access key الخاصين بك في لوحة تحكم OpenReplay ضمن ‘Preferences > Integration’، واختر المنطقة، ثم اختر مجموعة السجلات التي تريد تتبعها من القائمة المنسدلة.

3. تمرير openReplaySessionToken
Section titled 3. تمرير openReplaySessionTokenلربط حدث CloudWatch بجلسة المستخدم المسجلة، يجب تمرير رمز فريد من الواجهة الأمامية إلى الواجهة الخلفية في كل طلب ترغب في تتبعه. يمكن القيام بذلك باستخدام رأس HTTP مخصص. في المثال أدناه، نستخدم الدالة fetch لإرسال هذا الرأس.
const headers = {
Accept: 'application/json',
'Content-Type': 'application/json',
};
if (tracker.getSessionToken()) { // use 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 من ربط إدخال سجل Cloudwatch بجلسة المستخدم المسجلة، يجب تمرير رمز فريد كجزء من كل خطأ في الواجهة الخلفية ترغب في تتبعه.
فيما يلي مثال بلغة 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 حساس لحالة الأحرف.
هل لديك أسئلة؟
Section titled هل لديك أسئلة؟إذا واجهت أي مشكلات، تواصل معنا عبر Slack أو اطّلع على المنتدى الخاص بنا واحصل على المساعدة من مجتمعنا.