1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/OpenSkywalking-skywalking-client-js

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Apache SkyWalking Client JS

Sky Walking logo

Apache SkyWalking — клиентская библиотека JavaScript для сбора и трассировки исключений.

  • Предоставляет метрики и сбор данных об ошибках на серверную часть SkyWalking.
  • Имеет небольшой размер.
  • Делает браузер отправной точкой распределённой трассировки.

Внимание: версии SkyWalking Client JS 0.8.0 и более поздние требуют SkyWalking v9.

Использование

Установка

Библиотека времени выполнения skywalking-client-js доступна на npm.

npm install skywalking-client-js --save

Быстрый старт

Для работы с skywalking-client-js требуется SkyWalking 8.2+.

Пользователь может использовать метод register, чтобы автоматически загружать и передавать данные.

import ClientMonitor from 'skywalking-client-js';
// Отчёт о собранных данных по адресу http:// + window.location.host + /browser/perfData по умолчанию
ClientMonitor.register({
  # Используйте core/default/restPort на сервере OAP.
  # Если активированы внешние каналы связи, `receiver-sharing-server/default/restPort`,
  # см. https://skywalking.apache.org/docs/main/latest/en/setup/backend/backend-expose/
  collector: 'http://127.0.0.1:12800',
  service: 'test-ui',
  pagePath: '/current/page/name',
  serviceVersion: 'v1.0.0',
});

Параметры

Метод register поддерживает следующие параметры.

Параметр Тип Описание Требуется Значение по умолчанию
collector String По умолчанию собранные данные будут отправляться в текущий домен (/browser/perfData). Затем, как правило, мы рекомендуем вам использовать шлюз/прокси для перенаправления данных в OAP (resthost:restport). Если вы установите это значение, данные могут быть отправлены в другой домен, обратите внимание на проблему и решение CORS. false -
service String Идентификатор проекта. true -
serviceVersion String Версия проекта true -
pagePath String Путь проекта true -
jsErrors Boolean Мониторинг ошибок JS false true
apiErrors Boolean Мониторинг ошибок API false true
resourceErrors Boolean Мониторинг ошибок ресурсов false true
useFmp Boolean Сбор данных FMP (first meaningful paint) первого экрана false false
enableSPA Boolean Отслеживание события изменения хэша страницы и отчёта PV, подходит для сценариев одностраничного приложения false false
autoTracePerf Boolean Поддержка автоматической отправки данных о производительности. false true
vue Vue Поддержка мониторинга ошибок Vue false undefined
traceSDKInternal Boolean Трассировка внутренних RPC SDK. false false
detailMode Boolean В тегах spans отслеживаются метод HTTP и URL. false true
noTraceOrigins (string | RegExp)[] Источникам из списка noTraceOrigins трассировка не выполняется. false []
traceTimeInterval Number Настройка интервала времени для отчёта о сегментах. false 60000

Сбор метрик вручную

Используйте метод setPerformance, чтобы отправлять метрики в момент загрузки страницы или в любой другой значимый момент.

  1. Установите для параметра конфигурации SDK autoTracePerf значение false, чтобы отключить автоматическую отправку метрик производительности и дождаться ручного запуска эскалации.
  2. Вызовите метод ClientMonitor.setPerformance(object), чтобы отправить данные.
  • Примеры
import ClientMonitor from 'skywalking-client-js';

ClientMonitor.setPerformance({
  collector: 'http://127.0.0.1:12800',
  service: 'browser-app',
  serviceVersion: '1.0.0',
  pagePath: location.href,
  useFmp: true
});

Специальная сцена

SPA Page

В одностраничном приложении (spa) страница будет обновляться только один раз. Традиционный метод отправляет отчёт о PV только после загрузки страницы, но не может подсчитать PV каждой подстраницы и не может агрегировать другие типы журналов по подстраницам.
SDK предоставляет два метода обработки для страниц spa:

  1. Включите автоматический анализ spa
    Этот метод подходит для большинства сценариев одностраничных приложений с использованием хэша URL в качестве маршрута.
    В инициализированной конфигурации установите Включение SPA

Чтобы включить прослушивание событий изменения хэша страницы (что приведёт к повторной отчётности PV), необходимо установить значение enableSPA в true. Также следует использовать хэш URL в качестве поля страницы в других отчётах о данных.

  1. Ручная отчётность Этот метод можно использовать во всех сценариях одностраничных приложений. Этот метод можно применять, если первый метод не работает. SDK предоставляет набор методов страницы для ручного обновления имени страницы при отправке данных. Когда этот метод вызывается, страница PV будет повторно отправлена по умолчанию. Подробнее см. setPerformance().
app.on('routeChange', function (next) {
  ClientMonitor.setPerformance({
    collector: 'http://127.0.0.1:12800',
    service: 'browser-app',
    serviceVersion: '1.0.0',
    pagePath: location.href,
    useFmp: true
  });
});   

Трассировка диапазона запросов данных в браузере Поддерживаются два режима запросов данных: XMLHttpRequest и Fetch API. В то же время поддерживаются библиотеки и инструменты, основанные на XMLHttpRequest и fetch, такие как Axios, SuperAgent, OpenApi и так далее.

Перехват ошибок во фреймах, включая React, Angular, Vue

// Angular
import { ErrorHandler } from '@angular/core';
import ClientMonitor from 'skywalking-client-js';
export class AppGlobalErrorhandler implements ErrorHandler {
  handleError(error) {
    ClientMonitor.reportFrameErrors({
      collector: 'http://127.0.0.1:12800',
      service: 'angular-demo',
      pagePath: '/app',
      serviceVersion: 'v1.0.0',
    }, error);
  }
}
@NgModule({
  ...
  providers: [{provide: ErrorHandler, useClass: AppGlobalErrorhandler}]
})
class AppModule {}
// React
class ErrorBoundary extends React.Component {
  constructor(props) {
    super(props);
    this.state = { hasError: false };
  }

  static getDerivedStateFromError(error) {
    // Update state so the next render will show the fallback UI.
    return { hasError: true };
  }

  componentDidCatch(error, errorInfo) {
    // You can also log the error to an error reporting service
    ClientMonitor.reportFrameErrors({
      collector: 'http://127.0.0.1:12800',
      service: 'react-demo',
      pagePath: '/app',
      serviceVersion: 'v1.0.0',
    }, error);
  }

  render() {
    if (this.state.hasError) {
      // You can render any custom fallback UI
      return <h1>Something went wrong.</h1>;
    }

    return this.props.children; 
  }
}
<ErrorBoundary>
  <MyWidget />
</ErrorBoundary>
// Vue
Vue.config.errorHandler = (error) => {
  ClientMonitor.reportFrameErrors({
    collector: 'http://127.0.0.1:12800',
    service: 'vue-demo',
    pagePath: '/app',
    serviceVersion: 'v1.0.0',
  }, error);
}

Демо-проект Демо-проект предоставляет инструментированное веб-приложение с необходимой средой. Вы можете просто использовать его, чтобы увидеть данные, собранные SkyWalking, и то, как SkyWalking визуализируется в пользовательском интерфейсе. Дополнительная информация: нажмите здесь.

Контакты

  • Отправьте проблему.
  • Список рассылки: dev@skywalking.apache.org. Напишите на dev-subscribe@skywalking.apache.org, следуйте ответу, чтобы подписаться на список рассылки.
  • Присоединяйтесь к каналу #skywalking в Apache Slack. Если ссылка не работает, найдите последнюю версию на Apache INFRA WIKI.
  • Группа QQ: 392443393, 901167865.

Руководство по выпуску Все коммиттеры должны следовать Руководству по выпуску, чтобы опубликовать официальный выпуск.

Лицензия Apache 2.0

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Библиотека исключений и трассировки на стороне клиента для JavaScript в Apache SkyWalking. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/OpenSkywalking-skywalking-client-js.git
git@api.gitlife.ru:oschina-mirror/OpenSkywalking-skywalking-client-js.git
oschina-mirror
OpenSkywalking-skywalking-client-js
OpenSkywalking-skywalking-client-js
master