Skip to content

Commit

Permalink
Enabling UI Metric Collector
Browse files Browse the repository at this point in the history
Signed-off-by: Suchit Sahoo <suchsah@amazon.com>
  • Loading branch information
LDrago27 committed Mar 19, 2024
1 parent d2347ca commit 1f31cdd
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 22 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
- [Dynamic Configurations] Pass request headers when making application config calls ([#6164](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/6164))
- [Discover] Options button to configure legacy mode and remove the top navigation option ([#6170](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/6170))
- [Multiple Datasource] Add default functionality for customer to choose default datasource ([#6058](https://github.com/opensearch-project/OpenSearch-Dashboards/issues/6058))

- Enable UI Metric Collector to collect UI Metrics and Application Usage ([#6203](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/6203))

### 🐛 Bug Fixes

Expand Down
14 changes: 7 additions & 7 deletions packages/osd-analytics/src/reporter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ import { Report, ReportManager } from './report';
import { ApplicationUsage } from './metrics';

export interface ReporterConfig {
// http: ReportHTTP;
http: ReportHTTP;
storage?: Storage;
checkInterval?: number;
debug?: boolean;
Expand All @@ -49,7 +49,7 @@ export class Reporter {
checkInterval: number;
private interval?: NodeJS.Timer;
private lastAppId?: string;
// private http: ReportHTTP;
private http: ReportHTTP;
private reportManager: ReportManager;
private storageManager: ReportStorageManager;
private readonly applicationUsage: ApplicationUsage;
Expand All @@ -59,8 +59,8 @@ export class Reporter {
private started = false;

constructor(config: ReporterConfig) {
const { storage, debug, checkInterval = 90000, storageKey = 'analytics' } = config;
// this.http = http;
const { http, storage, debug, checkInterval = 90000, storageKey = 'analytics' } = config;
this.http = http;

Check warning on line 63 in packages/osd-analytics/src/reporter.ts

View check run for this annotation

Codecov / codecov/patch

packages/osd-analytics/src/reporter.ts#L63

Added line #L63 was not covered by tests
this.checkInterval = checkInterval;
this.applicationUsage = new ApplicationUsage();
this.storageManager = new ReportStorageManager(storageKey, storage);
Expand Down Expand Up @@ -144,14 +144,14 @@ export class Reporter {
public reportApplicationUsage(appId?: string) {
this.log(`Reporting application changed to ${appId}`);
this.lastAppId = appId || this.lastAppId;
// const appChangedReport = this.applicationUsage.appChanged(appId);
// if (appChangedReport) this.saveToReport([appChangedReport]);
const appChangedReport = this.applicationUsage.appChanged(appId);

Check warning on line 147 in packages/osd-analytics/src/reporter.ts

View check run for this annotation

Codecov / codecov/patch

packages/osd-analytics/src/reporter.ts#L147

Added line #L147 was not covered by tests
if (appChangedReport) this.saveToReport([appChangedReport]);
}

public sendReports = async () => {
if (!this.reportManager.isReportEmpty()) {
try {
// await this.http(this.reportManager.report);
await this.http(this.reportManager.report);

Check warning on line 154 in packages/osd-analytics/src/reporter.ts

View check run for this annotation

Codecov / codecov/patch

packages/osd-analytics/src/reporter.ts#L154

Added line #L154 was not covered by tests
this.flushReport();
} catch (err) {
this.log(`Error Sending Metrics Report ${err}`);
Expand Down
20 changes: 10 additions & 10 deletions src/plugins/usage_collection/public/services/create_reporter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,20 +38,20 @@ interface AnalyicsReporterConfig {
}

export function createReporter(config: AnalyicsReporterConfig): Reporter {
const { localStorage, debug } = config;
const { localStorage, debug, fetch } = config;

Check warning on line 41 in src/plugins/usage_collection/public/services/create_reporter.ts

View check run for this annotation

Codecov / codecov/patch

src/plugins/usage_collection/public/services/create_reporter.ts#L41

Added line #L41 was not covered by tests

return new Reporter({
debug,
storage: localStorage,
// async http(report) {
// const response = await fetch.post('/api/ui_metric/report', {
// body: JSON.stringify({ report }),
// });
async http(report) {
const response = await fetch.post('/api/ui_metric/report', {

Check warning on line 47 in src/plugins/usage_collection/public/services/create_reporter.ts

View check run for this annotation

Codecov / codecov/patch

src/plugins/usage_collection/public/services/create_reporter.ts#L47

Added line #L47 was not covered by tests
body: JSON.stringify({ report }),
});

// if (response.status !== 'ok') {
// throw Error('Unable to store report.');
// }
// return response;
// },
if (response.status !== 'ok') {
throw Error('Unable to store report.');

Check warning on line 52 in src/plugins/usage_collection/public/services/create_reporter.ts

View check run for this annotation

Codecov / codecov/patch

src/plugins/usage_collection/public/services/create_reporter.ts#L52

Added line #L52 was not covered by tests
}
return response;

Check warning on line 54 in src/plugins/usage_collection/public/services/create_reporter.ts

View check run for this annotation

Codecov / codecov/patch

src/plugins/usage_collection/public/services/create_reporter.ts#L54

Added line #L54 was not covered by tests
},
});
}
7 changes: 3 additions & 4 deletions src/plugins/usage_collection/server/routes/report_metrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,14 @@
* under the License.
*/

// import { schema } from '@osd/config-schema';
import { schema } from '@osd/config-schema';
import { IRouter, ISavedObjectsRepository } from 'opensearch-dashboards/server';
// import { storeReport, reportSchema } from '../report';
import { storeReport, reportSchema } from '../report';

export function registerUiMetricRoute(
router: IRouter,
getSavedObjects: () => ISavedObjectsRepository | undefined
) {
/*
router.post(
{
path: '/api/ui_metric/report',
Expand All @@ -59,5 +58,5 @@ export function registerUiMetricRoute(
return res.ok({ body: { status: 'fail' } });
}
}
);*/
);
}

0 comments on commit 1f31cdd

Please sign in to comment.