mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Echo: mechanism for collecting custom events lazily (#20365)
* Introduce Echo for collecting frontend metrics * Update public/app/core/services/echo/Echo.ts Co-Authored-By: Peter Holmberg <peterholmberg@users.noreply.github.com> * Custom meta when adding event * Rename consumer to backend * Remove buffer from Echo * Minor tweaks * Update package.json * Update public/app/app.ts * Update public/app/app.ts * Collect paint metrics when collecting tti. Remove echoBackendFactory * Update yarn.lock * Move Echo interfaces to runtime * progress on meta and echo * Collect meta analytics events * Move MetaanalyticsBackend to enterprise repo * Fixed unit tests * Removed unused type from test * Fixed issues with chunk loading (reverted index-template changes) * Restored changes * Fixed webpack prod
This commit is contained in:
committed by
Torkel Ödegaard
parent
4b8a50e70b
commit
178bb1d3ab
@@ -16,6 +16,8 @@ import 'vendor/angular-other/angular-strap';
|
||||
import $ from 'jquery';
|
||||
import angular from 'angular';
|
||||
import config from 'app/core/config';
|
||||
// @ts-ignore
|
||||
import ttiPolyfill from 'tti-polyfill';
|
||||
// @ts-ignore ignoring this for now, otherwise we would have to extend _ interface with move
|
||||
import _ from 'lodash';
|
||||
import { AppEvents, setMarkdownOptions, setLocale } from '@grafana/data';
|
||||
@@ -34,6 +36,10 @@ _.move = (array: [], fromIndex: number, toIndex: number) => {
|
||||
import { coreModule, angularModules } from 'app/core/core_module';
|
||||
import { registerAngularDirectives } from 'app/core/core';
|
||||
import { setupAngularRoutes } from 'app/routes/routes';
|
||||
import { setEchoSrv, registerEchoBackend } from '@grafana/runtime';
|
||||
import { Echo } from './core/services/echo/Echo';
|
||||
import { reportPerformance } from './core/services/echo/EchoSrv';
|
||||
import { PerformanceBackend } from './core/services/echo/backends/PerformanceBackend';
|
||||
|
||||
import 'app/routes/GrafanaCtrl';
|
||||
import 'app/features/all';
|
||||
@@ -163,6 +169,26 @@ export class GrafanaApp {
|
||||
importPluginModule(modulePath);
|
||||
}
|
||||
}
|
||||
|
||||
initEchoSrv() {
|
||||
setEchoSrv(new Echo({ debug: process.env.NODE_ENV === 'development' }));
|
||||
|
||||
ttiPolyfill.getFirstConsistentlyInteractive().then((tti: any) => {
|
||||
// Collecting paint metrics first
|
||||
const paintMetrics = performance.getEntriesByType('paint');
|
||||
|
||||
for (const metric of paintMetrics) {
|
||||
reportPerformance(metric.name, Math.round(metric.startTime + metric.duration));
|
||||
}
|
||||
reportPerformance('tti', tti);
|
||||
});
|
||||
|
||||
registerEchoBackend(new PerformanceBackend({}));
|
||||
|
||||
window.addEventListener('DOMContentLoaded', () => {
|
||||
reportPerformance('dcl', Math.round(performance.now()));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default new GrafanaApp();
|
||||
|
||||
Reference in New Issue
Block a user