Настройка Error Tracking (Rollbar) для веб-приложения

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка Error Tracking (Rollbar) для веб-приложения
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Настройка Error Tracking (Rollbar) для веб-приложения

Rollbar отличается от Sentry и Bugsnag акцентом на deploy tracking и RQL (Rollbar Query Language) — SQL-подобный язык для анализа ошибок. Полезен когда нужно быстро ответить на вопросы типа «сколько уникальных пользователей получили эту ошибку за неделю» или «коррелирует ли рост ошибок с конкретным деплоем».

Бесплатный план: 5000 событий/месяц.

Установка PHP / Laravel

composer require rollbar/rollbar-laravel

.env:

ROLLBAR_TOKEN=your_post_server_item_token
ROLLBAR_LEVEL=error
ROLLBAR_ENVIRONMENT=production

config/logging.php:

'rollbar' => [
    'driver' => 'monolog',
    'handler' => \Rollbar\Laravel\MonologHandler::class,
    'access_token' => env('ROLLBAR_TOKEN'),
    'level' => env('ROLLBAR_LEVEL', 'error'),
    'environment' => env('ROLLBAR_ENVIRONMENT', 'production'),
],
'stack' => [
    'driver' => 'stack',
    'channels' => ['daily', 'rollbar'],
],

Ручная отправка с person context:

\Rollbar\Rollbar::configure([
    'person_fn' => function () {
        $user = auth()->user();
        if (!$user) return null;
        return [
            'id' => $user->id,
            'username' => $user->name,
            'email' => $user->email,
        ];
    },
]);

// Отправить исключение с дополнительным контекстом
\Rollbar\Rollbar::error('Payment processing failed', [
    'order_id' => $order->id,
    'gateway' => 'stripe',
    'error_code' => $e->getCode(),
]);

Фильтрация ожидаемых исключений:

\Rollbar\Rollbar::configure([
    'check_ignore' => function ($isUncaught, $toLog, $payload) {
        // Игнорировать 404 и 401
        if ($toLog instanceof \Symfony\Component\HttpKernel\Exception\HttpException) {
            $code = $toLog->getStatusCode();
            if (in_array($code, [404, 401, 403])) {
                return true; // true = игнорировать
            }
        }
        return false;
    },
]);

JavaScript / React

npm install rollbar
// src/rollbar.ts
import Rollbar from 'rollbar';

const rollbar = new Rollbar({
  accessToken: import.meta.env.VITE_ROLLBAR_TOKEN,
  environment: import.meta.env.MODE,
  codeVersion: import.meta.env.VITE_APP_VERSION,
  captureUncaught: true,
  captureUnhandledRejections: true,
  payload: {
    client: {
      javascript: {
        source_map_enabled: true,
        code_version: import.meta.env.VITE_APP_VERSION,
        guess_uncaught_frames: true,
      },
    },
  },
  checkIgnore: (_isUncaught, _args, payload) => {
    // Игнорировать ошибки из расширений браузера
    const url = payload?.body?.trace?.frames?.[0]?.filename ?? '';
    if (url.startsWith('chrome-extension://')) return true;
    return false;
  },
});

export default rollbar;

React Provider:

// src/main.tsx
import { Provider, ErrorBoundary } from '@rollbar/react';
import rollbar from './rollbar';

root.render(
  <Provider instance={rollbar}>
    <ErrorBoundary
      fallbackUI={({ error }: { error: Error }) => (
        <div>
          <p>Ошибка: {error.message}</p>
        </div>
      )}
    >
      <App />
    </ErrorBoundary>
  </Provider>
);

Использование в компонентах:

import { useRollbar } from '@rollbar/react';

function PaymentForm() {
  const rollbar = useRollbar();

  const handleSubmit = async (data: PaymentData) => {
    try {
      await processPayment(data);
    } catch (error) {
      rollbar.error(error as Error, {
        payment_method: data.method,
        amount: data.amount,
      });
      showErrorMessage();
    }
  };
}

Deploy Tracking

Rollbar умеет связывать ошибки с деплоями. В CI/CD:

curl -X POST https://api.rollbar.com/api/1/deploy \
  -H "Content-Type: application/json" \
  -d '{
    "access_token": "'"$ROLLBAR_TOKEN"'",
    "environment": "production",
    "revision": "'"$GIT_COMMIT"'",
    "rollbar_username": "deploy-bot",
    "comment": "Deploy '"$GIT_COMMIT_MESSAGE"'",
    "status": "succeeded"
  }'

После этого в Rollbar на таймлайне ошибок видны маркеры деплоев — сразу понятно, какие ошибки появились после конкретного релиза.

Source Maps

# Загрузка source maps после сборки
curl -X POST https://api.rollbar.com/api/1/sourcemap \
  -F "access_token=$ROLLBAR_TOKEN" \
  -F "version=$APP_VERSION" \
  -F "minified_url=https://example.com/assets/app.js" \
  -F "source_map=@dist/assets/app.js.map"

Или через rollbar-cli:

npx @rollbar/cli sourcemaps upload \
  --access-token $ROLLBAR_TOKEN \
  --version $APP_VERSION \
  --directory dist/assets \
  --url-prefix https://example.com/assets/

RQL — аналитика ошибок

Rollbar Query Language позволяет делать запросы прямо из UI:

-- Топ ошибок последних 7 дней
SELECT item.counter, item.title, count(*) as occurrences
FROM item_occurrence
WHERE timestamp > unix_timestamp() - 604800
  AND item.environment = 'production'
GROUP BY item.counter, item.title
ORDER BY occurrences DESC
LIMIT 20

-- Уникальные пользователи по ошибке
SELECT count(distinct(person.id)) as affected_users
FROM item_occurrence
WHERE item.counter = 123
  AND timestamp > unix_timestamp() - 86400

-- Корреляция ошибок с версией
SELECT item.code_version, count(*) as count
FROM item_occurrence
WHERE item.title LIKE '%PaymentException%'
GROUP BY item.code_version
ORDER BY count DESC

Уведомления

Settings → Notifications → Rules:

  • New item — при первом появлении нового типа ошибки
  • Occurrence rate — если ошибка превысила N в час
  • Regression — если resolved ошибка вернулась
  • Deploy — при каждом задеплоенном релизе

Каналы: Slack, PagerDuty, email, webhook (для Telegram через промежуточный сервис).

Сроки

Полная настройка Rollbar для PHP + JavaScript приложения, deploy tracking в CI/CD, source maps, первичные уведомления: 2-4 часа.