diff --git a/x-pack/plugins/observability_solution/apm/server/routes/services/get_service_instance_metadata_details.ts b/x-pack/plugins/observability_solution/apm/server/routes/services/get_service_instance_metadata_details.ts index 23491821aa9cf4..2054c29deae79b 100644 --- a/x-pack/plugins/observability_solution/apm/server/routes/services/get_service_instance_metadata_details.ts +++ b/x-pack/plugins/observability_solution/apm/server/routes/services/get_service_instance_metadata_details.ts @@ -7,11 +7,7 @@ import { merge } from 'lodash'; import { rangeQuery } from '@kbn/observability-plugin/server'; import { ProcessorEvent } from '@kbn/observability-plugin/common'; -import { - metadataAppMetricMapping, - metadataAppTransactionEventMapping, - metaDataAppTransactionMetricMapping, -} from '../../utils/es_fields_mappings'; +import { serviceInstanceMetadataDetailsMapping } from '../../utils/es_fields_mappings'; import { METRICSET_NAME, SERVICE_NAME, SERVICE_NODE_NAME } from '../../../common/es_fields/apm'; import { maybe } from '../../../common/utils/maybe'; import { @@ -76,7 +72,7 @@ export async function getServiceInstanceMetadataDetails({ } ); - return maybe(metadataAppMetricMapping(response.hits.hits[0]?.fields)); + return maybe(serviceInstanceMetadataDetailsMapping(response.hits.hits[0]?.fields)); } async function getTransactionEventSample() { @@ -96,7 +92,7 @@ export async function getServiceInstanceMetadataDetails({ } ); - return maybe(metadataAppTransactionEventMapping(response.hits.hits[0]?.fields)); + return maybe(serviceInstanceMetadataDetailsMapping(response.hits.hits[0]?.fields)); } async function getTransactionMetricSample() { @@ -119,7 +115,7 @@ export async function getServiceInstanceMetadataDetails({ }, } ); - return maybe(metaDataAppTransactionMetricMapping(response.hits.hits[0]?.fields)); + return maybe(serviceInstanceMetadataDetailsMapping(response.hits.hits[0]?.fields)); } // we can expect the most detail of application metrics, @@ -138,7 +134,6 @@ export async function getServiceInstanceMetadataDetails({ applicationMetricSample ); - // todo: find scenarios for container and cloud then add to mappings const { agent, service, container, kubernetes, host, cloud } = sample; return { diff --git a/x-pack/plugins/observability_solution/apm/server/utils/es_fields_mappings.ts b/x-pack/plugins/observability_solution/apm/server/utils/es_fields_mappings.ts index 26887fa08ee362..1bc570365b33d2 100644 --- a/x-pack/plugins/observability_solution/apm/server/utils/es_fields_mappings.ts +++ b/x-pack/plugins/observability_solution/apm/server/utils/es_fields_mappings.ts @@ -730,7 +730,7 @@ export const serviceMetadataIconsMapping = ( }; }; -// todo(milosz): test it +// todo: check https://github.com/jennypavlova/kibana/pull/6#discussion_r1771611817 export const serviceVersionMapping = ( fields: Partial> ): Pick | undefined => { @@ -744,35 +744,28 @@ export const serviceVersionMapping = ( }; }; -export const metadataAppMetricMapping = (fields: Partial>) => { +// todo: missing `container` and `could` mappings +export const serviceInstanceMetadataDetailsMapping = ( + fields: Partial> = {} +) => { if (!fields) return undefined; return { '@timestamp': normalizeValue(fields[AT_TIMESTAMP]), agent: { - name: normalizeValue(fields[AGENT_NAME]), + name: normalizeValue(fields[AGENT_NAME]), version: normalizeValue(fields[AGENT_VERSION]), activation_method: normalizeValue(fields[AGENT_ACTIVATION_METHOD]), }, host: { architecture: normalizeValue(fields[HOST_ARCHITECTURE]), hostname: normalizeValue(fields[HOST_HOSTNAME]), - ip: normalizeValue(fields[HOST_IP]), name: normalizeValue(fields[HOST_NAME]), + ip: normalizeValue(fields[HOST_IP]), os: { platform: normalizeValue(fields[HOST_OS_PLATFORM]), }, }, - kubernetes: { - namespace: normalizeValue(fields[KUBERNETES_NAMESPACE]), - node: { - name: normalizeValue(fields[KUBERNETES_NODE_NAME]), - }, - pod: { - name: normalizeValue(fields[KUBERNETES_POD_NAME]), - uid: normalizeValue(fields[KUBERNETES_POD_UID]), - }, - }, service: { name: normalizeValue(fields[SERVICE_NAME]), environment: normalizeValue(fields[SERVICE_ENVIRONMENT]), @@ -780,9 +773,6 @@ export const metadataAppMetricMapping = (fields: Partial(fields[SERVICE_FRAMEWORK_NAME]), versions: normalizeValue(fields[SERVICE_FRAMEWORK_VERSION]), }, - language: { - name: normalizeValue(fields[SERVICE_LANGUAGE_NAME]), - }, node: { name: normalizeValue(fields[SERVICE_NODE_NAME]), }, @@ -790,15 +780,12 @@ export const metadataAppMetricMapping = (fields: Partial(fields[SERVICE_RUNTIME_NAME]), version: normalizeValue(fields[SERVICE_RUNTIME_VERSION]), }, + language: { + name: normalizeValue(fields[SERVICE_LANGUAGE_NAME]), + version: normalizeValue(fields[SERVICE_LANGUAGE_VERSION]), + }, version: normalizeValue(fields[SERVICE_VERSION]), }, - }; -}; - -export const metadataAppTransactionEventMapping = (fields: Partial>) => { - if (!fields) return undefined; - - return { kubernetes: { namespace: normalizeValue(fields[KUBERNETES_NAMESPACE]), node: { @@ -809,82 +796,10 @@ export const metadataAppTransactionEventMapping = (fields: Partial(fields[KUBERNETES_POD_UID]), }, }, - agent: { - name: normalizeValue(fields[AGENT_NAME]), - version: normalizeValue(fields[AGENT_VERSION]), - activation_method: normalizeValue(fields[AGENT_ACTIVATION_METHOD]), - }, - '@timestamp': normalizeValue(fields[AT_TIMESTAMP]), - service: { - name: normalizeValue(fields[SERVICE_NAME]), - environment: normalizeValue(fields[SERVICE_ENVIRONMENT]), - framework: { - name: normalizeValue(fields[SERVICE_FRAMEWORK_NAME]), - versions: normalizeValue(fields[SERVICE_FRAMEWORK_VERSION]), - }, - language: { - name: normalizeValue(fields[SERVICE_LANGUAGE_NAME]), - }, - node: { - name: normalizeValue(fields[SERVICE_NODE_NAME]), - }, - runtime: { - name: normalizeValue(fields[SERVICE_RUNTIME_NAME]), - version: normalizeValue(fields[SERVICE_RUNTIME_VERSION]), - }, - version: normalizeValue(fields[SERVICE_VERSION]), - }, - host: { - architecture: normalizeValue(fields[HOST_ARCHITECTURE]), - hostname: normalizeValue(fields[HOST_HOSTNAME]), - ip: fields[HOST_IP] as string[] | undefined, - name: normalizeValue(fields[HOST_NAME]), - os: { - platform: normalizeValue(fields[HOST_OS_PLATFORM]), - }, - }, - }; -}; - -export const metaDataAppTransactionMetricMapping = (fields: Partial>) => { - if (!fields) return undefined; - - return { - '@timestamp': normalizeValue(fields[AT_TIMESTAMP]), - agent: { - name: normalizeValue(fields[AGENT_NAME]), - }, - host: { - hostname: normalizeValue(fields[HOST_HOSTNAME]), - name: normalizeValue(fields[HOST_NAME]), - os: { - platform: normalizeValue(fields[HOST_OS_PLATFORM]), - }, - }, - kubernetes: { - pod: { - name: normalizeValue(fields[KUBERNETES_POD_NAME]), - }, - }, - service: { - name: normalizeValue(fields[SERVICE_NAME]), - environment: normalizeValue(fields[SERVICE_ENVIRONMENT]), - language: { - name: normalizeValue(fields[SERVICE_LANGUAGE_NAME]), - }, - node: { - name: normalizeValue(fields[SERVICE_NODE_NAME]), - }, - runtime: { - name: normalizeValue(fields[SERVICE_RUNTIME_NAME]), - version: normalizeValue(fields[SERVICE_RUNTIME_VERSION]), - }, - version: normalizeValue(fields[SERVICE_VERSION]), - }, }; }; -// todo: missing cloud and service properties +// todo: missing `cloud` and `service` properties export const serviceAgentNameMapping = (fields: Partial>) => { if (!fields) return undefined;