[Metrics UI] Remove APM Hard Dependency (#64952)
* [Metrics UI] Remove APM Hard Dependency * removing unused variable Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
This commit is contained in:
parent
4142f575e1
commit
8adc272f0c
|
@ -4,7 +4,6 @@
|
|||
"kibanaVersion": "kibana",
|
||||
"requiredPlugins": [
|
||||
"features",
|
||||
"apm",
|
||||
"usageCollection",
|
||||
"spaces",
|
||||
"home",
|
||||
|
|
|
@ -18,7 +18,6 @@ import {
|
|||
import { InfraBackendLibs } from '../../lib/infra_types';
|
||||
import { getMetricMetadata } from './lib/get_metric_metadata';
|
||||
import { pickFeatureName } from './lib/pick_feature_name';
|
||||
import { hasAPMData } from './lib/has_apm_data';
|
||||
import { getCloudMetricsMetadata } from './lib/get_cloud_metric_metadata';
|
||||
import { getNodeInfo } from './lib/get_node_info';
|
||||
import { throwErrors } from '../../../common/runtime_types';
|
||||
|
@ -74,16 +73,13 @@ export const initMetadataRoute = (libs: InfraBackendLibs) => {
|
|||
const cloudMetricsFeatures = pickFeatureName(cloudMetricsMetadata.buckets).map(
|
||||
nameToFeature('metrics')
|
||||
);
|
||||
const hasAPM = await hasAPMData(framework, requestContext, configuration, nodeId, nodeType);
|
||||
const apmMetricFeatures = hasAPM ? [{ name: 'apm.transaction', source: 'apm' }] : [];
|
||||
|
||||
const id = metricsMetadata.id;
|
||||
const name = metricsMetadata.name || id;
|
||||
return response.ok({
|
||||
body: InfraMetadataRT.encode({
|
||||
id,
|
||||
name,
|
||||
features: [...metricFeatures, ...cloudMetricsFeatures, ...apmMetricFeatures],
|
||||
features: [...metricFeatures, ...cloudMetricsFeatures],
|
||||
info,
|
||||
}),
|
||||
});
|
||||
|
|
|
@ -1,54 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License;
|
||||
* you may not use this file except in compliance with the Elastic License.
|
||||
*/
|
||||
|
||||
import { RequestHandlerContext } from 'src/core/server';
|
||||
|
||||
import { KibanaFramework } from '../../../lib/adapters/framework/kibana_framework_adapter';
|
||||
import { InfraSourceConfiguration } from '../../../lib/sources';
|
||||
import { findInventoryFields } from '../../../../common/inventory_models';
|
||||
import { InventoryItemType } from '../../../../common/inventory_models/types';
|
||||
|
||||
export const hasAPMData = async (
|
||||
framework: KibanaFramework,
|
||||
requestContext: RequestHandlerContext,
|
||||
sourceConfiguration: InfraSourceConfiguration,
|
||||
nodeId: string,
|
||||
nodeType: InventoryItemType
|
||||
) => {
|
||||
const apmIndices = await framework.plugins.apm.getApmIndices();
|
||||
const apmIndex = apmIndices['apm_oss.transactionIndices'] || 'apm-*';
|
||||
const fields = findInventoryFields(nodeType, sourceConfiguration.fields);
|
||||
|
||||
// There is a bug in APM ECS data where host.name is not set.
|
||||
// This will fixed with: https://github.com/elastic/apm-server/issues/2502
|
||||
const nodeFieldName = nodeType === 'host' ? 'host.hostname' : fields.id;
|
||||
const params = {
|
||||
allowNoIndices: true,
|
||||
ignoreUnavailable: true,
|
||||
terminateAfter: 1,
|
||||
index: apmIndex,
|
||||
body: {
|
||||
size: 0,
|
||||
query: {
|
||||
bool: {
|
||||
filter: [
|
||||
{
|
||||
match: { [nodeFieldName]: nodeId },
|
||||
},
|
||||
{
|
||||
exists: { field: 'service.name' },
|
||||
},
|
||||
{
|
||||
exists: { field: 'transaction.type' },
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
const response = await framework.callWithRequest<{}, {}>(requestContext, 'search', params);
|
||||
return response.hits.total.value !== 0;
|
||||
};
|
|
@ -29,11 +29,6 @@ const timeRange800withAws = {
|
|||
to: DATES[`8.0.0`].logs_and_metrics_with_aws.max,
|
||||
};
|
||||
|
||||
const timeRange800 = {
|
||||
from: DATES['8.0.0'].logs_and_metrics.min,
|
||||
to: DATES[`8.0.0`].logs_and_metrics.max,
|
||||
};
|
||||
|
||||
export default function({ getService }: FtrProviderContext) {
|
||||
const esArchiver = getService('esArchiver');
|
||||
const supertest = getService('supertest');
|
||||
|
@ -269,42 +264,6 @@ export default function({ getService }: FtrProviderContext) {
|
|||
}
|
||||
});
|
||||
});
|
||||
describe('APM metrics', () => {
|
||||
const archiveName = 'infra/8.0.0/metrics_and_apm';
|
||||
before(() => esArchiver.load(archiveName));
|
||||
after(() => esArchiver.unload(archiveName));
|
||||
|
||||
it('host without APM data', async () => {
|
||||
const metadata = await fetchMetadata({
|
||||
sourceId: 'default',
|
||||
nodeId: 'gke-observability-8--observability-8--bc1afd95-f0zc',
|
||||
nodeType: 'host',
|
||||
timeRange: timeRange800,
|
||||
});
|
||||
if (metadata) {
|
||||
expect(
|
||||
metadata.features.some(f => f.name === 'apm.transaction' && f.source === 'apm')
|
||||
).to.be(false);
|
||||
} else {
|
||||
throw new Error('Metadata should never be empty');
|
||||
}
|
||||
});
|
||||
it('pod with APM data', async () => {
|
||||
const metadata = await fetchMetadata({
|
||||
sourceId: 'default',
|
||||
nodeId: 'c1031331-9ae0-11e9-9a96-42010a84004d',
|
||||
nodeType: 'pod',
|
||||
timeRange: timeRange800,
|
||||
});
|
||||
if (metadata) {
|
||||
expect(
|
||||
metadata.features.some(f => f.name === 'apm.transaction' && f.source === 'apm')
|
||||
).to.be(true);
|
||||
} else {
|
||||
throw new Error('Metadata should never be empty');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue