mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
[Uptime] Fix uptime telemetry expensive query calls (#124281)
This commit is contained in:
parent
21710dfb77
commit
d091e17d16
6 changed files with 43 additions and 13 deletions
|
@ -109,6 +109,8 @@ class ApiService {
|
|||
body: JSON.stringify(data),
|
||||
});
|
||||
|
||||
this.addInspectorRequest?.({ data: response, status: FETCH_STATUS.SUCCESS, loading: false });
|
||||
|
||||
if (decodeType) {
|
||||
const decoded = decodeType.decode(response);
|
||||
if (isRight(decoded)) {
|
||||
|
|
|
@ -11,6 +11,7 @@ import { CollectorFetchContext, UsageCollectionSetup } from 'src/plugins/usage_c
|
|||
import { PageViewParams, UptimeTelemetry, Usage } from './types';
|
||||
import { savedObjectsAdapter } from '../../saved_objects/saved_objects';
|
||||
import { UptimeESClient, createUptimeESClient } from '../../lib';
|
||||
import { createEsQuery } from '../../../../common/utils/es_search';
|
||||
|
||||
interface UptimeTelemetryCollector {
|
||||
[key: number]: UptimeTelemetry;
|
||||
|
@ -215,7 +216,7 @@ export class KibanaTelemetryAdapter {
|
|||
savedObjectsClient: SavedObjectsClientContract
|
||||
) {
|
||||
const dynamicSettings = await savedObjectsAdapter.getUptimeDynamicSettings(savedObjectsClient);
|
||||
const params = {
|
||||
const params = createEsQuery({
|
||||
index: dynamicSettings.heartbeatIndices,
|
||||
body: {
|
||||
query: {
|
||||
|
@ -229,6 +230,11 @@ export class KibanaTelemetryAdapter {
|
|||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
exists: {
|
||||
field: 'summary',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
|
@ -271,9 +277,9 @@ export class KibanaTelemetryAdapter {
|
|||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
const { body: result } = await callCluster.search(params);
|
||||
const { body: result } = await callCluster.search(params, 'telemetryLog');
|
||||
|
||||
const numberOfUniqueMonitors: number = result?.aggregations?.unique_monitors?.value ?? 0;
|
||||
const numberOfUniqueLocations: number = result?.aggregations?.unique_locations?.value ?? 0;
|
||||
|
@ -318,6 +324,11 @@ export class KibanaTelemetryAdapter {
|
|||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
exists: {
|
||||
field: 'summary',
|
||||
},
|
||||
},
|
||||
{
|
||||
term: {
|
||||
'monitor.fleet_managed': true,
|
||||
|
@ -356,7 +367,7 @@ export class KibanaTelemetryAdapter {
|
|||
},
|
||||
};
|
||||
|
||||
const { body: result } = await callCluster.search(params);
|
||||
const { body: result } = await callCluster.search(params, 'telemetryLogFleet');
|
||||
|
||||
const numberOfUniqueMonitors: number = result?.aggregations?.unique_monitors?.value ?? 0;
|
||||
const monitorNameStats = result?.aggregations?.monitor_name;
|
||||
|
|
|
@ -12,6 +12,7 @@ export interface PageViewParams {
|
|||
autoRefreshEnabled: boolean;
|
||||
autorefreshInterval: number;
|
||||
refreshTelemetryHistory?: boolean;
|
||||
refreshEsData?: boolean;
|
||||
}
|
||||
|
||||
export interface Stats {
|
||||
|
|
|
@ -21,18 +21,25 @@ export const createLogPageViewRoute: UMRestApiRouteFactory = () => ({
|
|||
dateEnd: schema.string(),
|
||||
autoRefreshEnabled: schema.boolean(),
|
||||
autorefreshInterval: schema.number(),
|
||||
refreshEsData: schema.maybe(schema.boolean()),
|
||||
refreshTelemetryHistory: schema.maybe(schema.boolean()),
|
||||
}),
|
||||
},
|
||||
handler: async ({ savedObjectsClient, uptimeEsClient, request }): Promise<any> => {
|
||||
const pageView = request.body as PageViewParams;
|
||||
if (pageView.refreshTelemetryHistory) {
|
||||
// this is primarily only used for API testing
|
||||
KibanaTelemetryAdapter.clearLocalTelemetry();
|
||||
}
|
||||
await KibanaTelemetryAdapter.countNoOfUniqueMonitorAndLocations(
|
||||
uptimeEsClient,
|
||||
savedObjectsClient
|
||||
);
|
||||
|
||||
if (pageView.refreshEsData) {
|
||||
// this is primarily only used for API testing
|
||||
|
||||
await KibanaTelemetryAdapter.countNoOfUniqueMonitorAndLocations(
|
||||
uptimeEsClient,
|
||||
savedObjectsClient
|
||||
);
|
||||
}
|
||||
await KibanaTelemetryAdapter.countNoOfUniqueFleetManagedMonitors(uptimeEsClient);
|
||||
return KibanaTelemetryAdapter.countPageView(pageView as PageViewParams);
|
||||
},
|
||||
|
|
|
@ -14,8 +14,7 @@ export default function ({ getService }: FtrProviderContext) {
|
|||
const supertest = getService('supertest');
|
||||
const es = getService('es');
|
||||
|
||||
// FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/111240
|
||||
describe.skip('telemetry collectors heartbeat', () => {
|
||||
describe('telemetry collectors heartbeat', () => {
|
||||
before('generating data', async () => {
|
||||
await getService('esArchiver').load('x-pack/test/functional/es_archives/uptime/blank');
|
||||
|
||||
|
@ -69,7 +68,7 @@ export default function ({ getService }: FtrProviderContext) {
|
|||
'downMonitorId',
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
10 * 1000,
|
||||
{
|
||||
observer,
|
||||
monitor: {
|
||||
|
@ -79,7 +78,15 @@ export default function ({ getService }: FtrProviderContext) {
|
|||
'down'
|
||||
);
|
||||
|
||||
await makeChecksWithStatus(es, 'mixMonitorId', 1, 1, 1, { observer: observer2 }, 'down');
|
||||
await makeChecksWithStatus(
|
||||
es,
|
||||
'mixMonitorId',
|
||||
1,
|
||||
1,
|
||||
30 * 1000,
|
||||
{ observer: observer2 },
|
||||
'down'
|
||||
);
|
||||
await es.indices.refresh();
|
||||
});
|
||||
|
||||
|
@ -103,6 +110,7 @@ export default function ({ getService }: FtrProviderContext) {
|
|||
dateEnd: 'now/d',
|
||||
autoRefreshEnabled: true,
|
||||
refreshTelemetryHistory: true,
|
||||
refreshEsData: true,
|
||||
})
|
||||
.expect(200);
|
||||
|
||||
|
@ -111,7 +119,7 @@ export default function ({ getService }: FtrProviderContext) {
|
|||
monitor_page: 1,
|
||||
no_of_unique_monitors: 4,
|
||||
settings_page: 0,
|
||||
monitor_frequency: [120, 0.001, 60, 60],
|
||||
monitor_frequency: [10, 30, 60, 60],
|
||||
monitor_name_stats: { min_length: 7, max_length: 22, avg_length: 12 },
|
||||
no_of_unique_observer_locations: 3,
|
||||
observer_location_name_stats: { min_length: 2, max_length: 7, avg_length: 4.8 },
|
||||
|
|
|
@ -175,6 +175,7 @@ export default function ({ getService }: FtrProviderContext) {
|
|||
dateEnd: 'now/d',
|
||||
autoRefreshEnabled: true,
|
||||
refreshTelemetryHistory: true,
|
||||
refreshEsData: true,
|
||||
})
|
||||
.expect(200);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue