Apache SkyWalking Client JS
Apache SkyWalking — клиентская библиотека JavaScript для сбора и трассировки исключений.
Внимание: версии 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
, чтобы отправлять метрики в момент загрузки страницы или в любой другой значимый момент.
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) страница будет обновляться только один раз. Традиционный метод отправляет отчёт о PV только после загрузки страницы, но не может подсчитать PV каждой подстраницы и не может агрегировать другие типы журналов по подстраницам.
SDK предоставляет два метода обработки для страниц spa:
Чтобы включить прослушивание событий изменения хэша страницы (что приведёт к повторной отчётности PV), необходимо установить значение enableSPA в true. Также следует использовать хэш URL в качестве поля страницы в других отчётах о данных.
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-subscribe@skywalking.apache.org
, следуйте ответу, чтобы подписаться на список рассылки.#skywalking
в Apache Slack. Если ссылка не работает, найдите последнюю версию на Apache INFRA WIKI.Руководство по выпуску Все коммиттеры должны следовать Руководству по выпуску, чтобы опубликовать официальный выпуск.
Лицензия Apache 2.0
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )