SumoLogic
Как интегрировать SumoLogic с OpenReplay и видеть ошибки бэкенда рядом с записями сессий.
1. Создание нового Access ID и Access Key
Section titled 1. Создание нового Access ID и Access Key- Войдите в свою учётную запись SumoLogic.
- Перейдите на страницу Access Keys.
- Нажмите + Add Access Key.
- В поле имени укажите «openreplay» и нажмите Create Key.
- Скопируйте новые
Access IDиAccess Key, так как они понадобятся нам для интеграции. - Нажмите Done.
Для получения дополнительной информации о создании Access ID и Access Key, пожалуйста, обратитесь к этой документации.
2. Включение SumoLogic в OpenReplay
Section titled 2. Включение SumoLogic в OpenReplayУкажите ваши Access ID и Access Key в панели управления OpenReplay в разделе «Preferences > Integration».

3. Распространение openReplaySessionToken
Section titled 3. Распространение openReplaySessionTokenЧтобы связать событие SumoLogic с записанной пользовательской сессией, уникальный токен должен передаваться с вашего фронтенда на бэкенд при каждом запросе, который вы хотите отслеживать. Это можно сделать с помощью пользовательского 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 мог сопоставить сообщение SumoLogic с записанной пользовательской сессией, уникальный токен должен передаваться в составе каждой ошибки бэкенда, которую вы хотите отслеживать.
Ниже приведён пример на 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 или загляните на наш Форум и получите помощь от нашего сообщества.