in packages/opentelemetry-resource-util/src/index.ts [231:296]
export function mapOtelResourceToMonitoredResource(
resource: IResource
): MonitoredResource;
/**
* @deprecated This overload is deprecated, do not pass the includeUnsupportedResources boolean
* parameter. It will be removed in the next major version release.
*
* @param resource the OTel Resource
* @returns the corresponding GCM MonitoredResource
*/
export function mapOtelResourceToMonitoredResource(
resource: IResource,
includeUnsupportedResources: boolean | undefined
): MonitoredResource;
export function mapOtelResourceToMonitoredResource(
resource: IResource,
includeUnsupportedResources = false
): MonitoredResource {
const attrs = resource.attributes;
const platform = attrs[SEMRESATTRS_CLOUD_PLATFORM];
let mr: MonitoredResource;
if (platform === CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE) {
mr = createMonitoredResource(GCE_INSTANCE, attrs);
} else if (platform === CLOUDPLATFORMVALUES_GCP_APP_ENGINE) {
mr = createMonitoredResource(GAE_INSTANCE, attrs);
} else if (platform === CLOUDPLATFORMVALUES_AWS_EC2) {
mr = createMonitoredResource(AWS_EC2_INSTANCE, attrs);
}
// Cloud Run and Cloud Functions are not writeable for custom metrics yet
else if (
includeUnsupportedResources &&
platform === CLOUDPLATFORMVALUES_GCP_CLOUD_RUN
) {
mr = createMonitoredResource(CLOUD_RUN_REVISION, attrs);
} else if (
includeUnsupportedResources &&
platform === CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS
) {
mr = createMonitoredResource(CLOUD_FUNCTION, attrs);
} else if (SEMRESATTRS_K8S_CLUSTER_NAME in attrs) {
// if k8s.cluster.name is set, pattern match for various k8s resources.
// this will also match non-cloud k8s platforms like minikube.
if (SEMRESATTRS_K8S_CONTAINER_NAME in attrs) {
mr = createMonitoredResource(K8S_CONTAINER, attrs);
} else if (SEMRESATTRS_K8S_POD_NAME in attrs) {
mr = createMonitoredResource(K8S_POD, attrs);
} else if (SEMRESATTRS_K8S_NODE_NAME in attrs) {
mr = createMonitoredResource(K8S_NODE, attrs);
} else {
mr = createMonitoredResource(K8S_CLUSTER, attrs);
}
} else if (
(SEMRESATTRS_SERVICE_NAME in attrs || SEMRESATTRS_FAAS_NAME in attrs) &&
(SEMRESATTRS_SERVICE_INSTANCE_ID in attrs ||
SEMRESATTRS_FAAS_INSTANCE in attrs)
) {
// fallback to generic_task
mr = createMonitoredResource(GENERIC_TASK, attrs);
} else {
// If not possible, finally fallback to generic_node
mr = createMonitoredResource(GENERIC_NODE, attrs);
}
return mr;
}