自定义埋点上报

概览

OpenSumi 内置提供了埋点上报,给集成方提供一些关键 IDE 数据的指标、一方核心插件的一些关键性能等数据。集成方可自行将这些数据上报到自己的平台。

前端模块使用

import { IReporterService } from '@opensumi/ide-core-browser';

@Injectable()
class {
  @Autowired(IReporterService)
  reporterService: IReporterService

  async activateExtension() {
    ...
    const timer = reporterService.time(REPORT_NAME.ACTIVE_EXTENSION);
    ...
    timer.timeEnd(extension.extensionId)
  }
}

后端模块使用

import { IReporterService } from '@opensumi/ide-core-node';

@Injectable()
class {
  @Autowired(IReporterService)
  reporterService: IReporterService

  async activateExtension() {
    ...
    reporterService.point(REPORT_NAME.ACTIVE_EXTENSION, extension.extensionId);
  }
}

插件中使用

import { reporter } from 'sumi';

activate() {
  ...
  const reporterTimer = reporter.time(`ts-load`);
  func();
  reporterTimer.timeEnd(`ts-load`);
}

function deactivate() {
   reporter.dispose();
}

上报

集成方通过替换内置 Provider 实现:

import {
  PointData,
  PerformanceData,
  IReporter
} from '@opensumi/ide-core-browser';

@Injectable()
class Reporter implements IReporter {
  performance(name: string, data: PerformanceData) {}

  point(name: string, data: PointData) {}
}

injector.addProviders({
  token: IReporter,
  useClass: Reporter
});

附录

框架内打点记录

name类型msg备注
activateExtensionperformanceextensionId插件激活时间埋点
loadExtensionMainperformanceextensionId加载插件 main js 时间埋点
provideCompletionItemsperformancemodel.uri.toString()获取 completion 时间埋点
data.extra.extDuration 可以获取在插件进程中的耗时
channelReconnectpoint重连埋点
measureperformance阶段名启动各个阶段生命周期执行的时间,其中 msg 格式主要包括:1. 各模块生命周期时长: ${ModuleConstructName}.(initialize | onStart | onDidStart) 2. 所有模块生命周期时长:Contributions.(initialize | onStart | start)3. 框架状态ready耗时:Framework.ready 4. 各个类内方法执行的时长:${ClassConstructName}.${methodName}
provideHoverperformanceuri extname调用耗时埋点
provideDefinitionperformanceuri extname调用耗时埋点
provideTypeDefinitionperformanceuri extname调用耗时埋点
provideFoldingRangesperformanceuri extname调用耗时埋点
provideDocumentColorsperformanceuri extname调用耗时埋点
provideColorPresentationsperformanceuri extname调用耗时埋点
provideDocumentHighlightsperformanceuri extname调用耗时埋点
provideLinksperformanceuri extname调用耗时埋点
provideReferencesperformanceuri extname调用耗时埋点
provideDocumentSymbolsperformanceuri extname调用耗时埋点
provideImplementationperformanceuri extname调用耗时埋点
provideCodeActionsperformanceuri extname调用耗时埋点
provideRenameEditsperformanceuri extname调用耗时埋点
provideSignatureHelpperformanceuri extname调用耗时埋点
provideCodeLensesperformanceuri extname调用耗时埋点
resolveCodeLenspoint调用次数
provideOnTypeFormattingEditsperformanceuri extname调用耗时埋点
provideSelectionRangesperformanceuri extname调用耗时埋点