Skip to content

Commit

Permalink
Fix GoogleCloudPlatform#594 enable mapping when not gcp kubernetes
Browse files Browse the repository at this point in the history
  • Loading branch information
tkmsaaaam committed May 16, 2024
1 parent 3a037e1 commit 9cebe26
Show file tree
Hide file tree
Showing 3 changed files with 498 additions and 13 deletions.
228 changes: 228 additions & 0 deletions packages/opentelemetry-resource-util/__snapshots__/index.test.ts.js
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,30 @@ exports['mapOtelResourceToMonitoredResource should map to k8s_cluster 1'] = {
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_cluster on aws_eks 1'] = {
"type": "k8s_cluster",
"labels": {
"location": "myavailzone",
"cluster_name": "mycluster"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_cluster on azure_aks 1'] = {
"type": "k8s_cluster",
"labels": {
"location": "myavailzone",
"cluster_name": "mycluster"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_cluster on non-cloud 1'] = {
"type": "k8s_cluster",
"labels": {
"location": "myavailzone",
"cluster_name": "mycluster"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_cluster with region fallback 1'] = {
"type": "k8s_cluster",
"labels": {
Expand All @@ -203,6 +227,30 @@ exports['mapOtelResourceToMonitoredResource should map to k8s_cluster with regio
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_cluster with region fallback on aws_eks 1'] = {
"type": "k8s_cluster",
"labels": {
"location": "myregion",
"cluster_name": "mycluster"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_cluster with region fallback on azure_aks 1'] = {
"type": "k8s_cluster",
"labels": {
"location": "myregion",
"cluster_name": "mycluster"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_cluster with region fallback on non-cloud 1'] = {
"type": "k8s_cluster",
"labels": {
"location": "myregion",
"cluster_name": "mycluster"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_container 1'] = {
"type": "k8s_container",
"labels": {
Expand All @@ -214,6 +262,39 @@ exports['mapOtelResourceToMonitoredResource should map to k8s_container 1'] = {
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_container on aws_eks 1'] = {
"type": "k8s_container",
"labels": {
"location": "myavailzone",
"cluster_name": "mycluster",
"namespace_name": "myns",
"pod_name": "mypod",
"container_name": "mycontainer"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_container on azure_aks 1'] = {
"type": "k8s_container",
"labels": {
"location": "myavailzone",
"cluster_name": "mycluster",
"namespace_name": "myns",
"pod_name": "mypod",
"container_name": "mycontainer"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_container on non-cloud 1'] = {
"type": "k8s_container",
"labels": {
"location": "myavailzone",
"cluster_name": "mycluster",
"namespace_name": "myns",
"pod_name": "mypod",
"container_name": "mycontainer"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_container with region fallback 1'] = {
"type": "k8s_container",
"labels": {
Expand All @@ -225,6 +306,39 @@ exports['mapOtelResourceToMonitoredResource should map to k8s_container with reg
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_container with region fallback on aws_eks 1'] = {
"type": "k8s_container",
"labels": {
"location": "myregion",
"cluster_name": "mycluster",
"namespace_name": "myns",
"pod_name": "mypod",
"container_name": "mycontainer"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_container with region fallback on azure_aks 1'] = {
"type": "k8s_container",
"labels": {
"location": "myregion",
"cluster_name": "mycluster",
"namespace_name": "myns",
"pod_name": "mypod",
"container_name": "mycontainer"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_container with region fallback on non-cloud 1'] = {
"type": "k8s_container",
"labels": {
"location": "myregion",
"cluster_name": "mycluster",
"namespace_name": "myns",
"pod_name": "mypod",
"container_name": "mycontainer"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_node 1'] = {
"type": "k8s_node",
"labels": {
Expand All @@ -234,6 +348,33 @@ exports['mapOtelResourceToMonitoredResource should map to k8s_node 1'] = {
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_node on aws_eks 1'] = {
"type": "k8s_node",
"labels": {
"location": "myavailzone",
"cluster_name": "mycluster",
"node_name": "mynode"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_node on azure_aks 1'] = {
"type": "k8s_node",
"labels": {
"location": "myavailzone",
"cluster_name": "mycluster",
"node_name": "mynode"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_node on non-cloud 1'] = {
"type": "k8s_node",
"labels": {
"location": "myavailzone",
"cluster_name": "mycluster",
"node_name": "mynode"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_node with region fallback 1'] = {
"type": "k8s_node",
"labels": {
Expand All @@ -243,6 +384,33 @@ exports['mapOtelResourceToMonitoredResource should map to k8s_node with region f
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_node with region fallback on aws_eks 1'] = {
"type": "k8s_node",
"labels": {
"location": "myregion",
"cluster_name": "mycluster",
"node_name": "mynode"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_node with region fallback on azure_aks 1'] = {
"type": "k8s_node",
"labels": {
"location": "myregion",
"cluster_name": "mycluster",
"node_name": "mynode"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_node with region fallback on non-cloud 1'] = {
"type": "k8s_node",
"labels": {
"location": "myregion",
"cluster_name": "mycluster",
"node_name": "mynode"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_pod 1'] = {
"type": "k8s_pod",
"labels": {
Expand All @@ -253,6 +421,36 @@ exports['mapOtelResourceToMonitoredResource should map to k8s_pod 1'] = {
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_pod on aws_eks 1'] = {
"type": "k8s_pod",
"labels": {
"location": "myavailzone",
"cluster_name": "mycluster",
"namespace_name": "myns",
"pod_name": "mypod"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_pod on azure_aks 1'] = {
"type": "k8s_pod",
"labels": {
"location": "myavailzone",
"cluster_name": "mycluster",
"namespace_name": "myns",
"pod_name": "mypod"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_pod on non-cloud 1'] = {
"type": "k8s_pod",
"labels": {
"location": "myavailzone",
"cluster_name": "mycluster",
"namespace_name": "myns",
"pod_name": "mypod"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_pod with region fallback 1'] = {
"type": "k8s_pod",
"labels": {
Expand All @@ -262,3 +460,33 @@ exports['mapOtelResourceToMonitoredResource should map to k8s_pod with region fa
"pod_name": "mypod"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_pod with region fallback on aws_eks 1'] = {
"type": "k8s_pod",
"labels": {
"location": "myregion",
"cluster_name": "mycluster",
"namespace_name": "myns",
"pod_name": "mypod"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_pod with region fallback on azure_aks 1'] = {
"type": "k8s_pod",
"labels": {
"location": "myregion",
"cluster_name": "mycluster",
"namespace_name": "myns",
"pod_name": "mypod"
}
}

exports['mapOtelResourceToMonitoredResource should map to k8s_pod with region fallback on non-cloud 1'] = {
"type": "k8s_pod",
"labels": {
"location": "myregion",
"cluster_name": "mycluster",
"namespace_name": "myns",
"pod_name": "mypod"
}
}
27 changes: 14 additions & 13 deletions packages/opentelemetry-resource-util/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ import {
CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS,
CLOUDPLATFORMVALUES_GCP_CLOUD_RUN,
CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE,
CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE,
SEMRESATTRS_CLOUD_ACCOUNT_ID,
SEMRESATTRS_CLOUD_AVAILABILITY_ZONE,
SEMRESATTRS_CLOUD_PLATFORM,
Expand Down Expand Up @@ -253,16 +252,6 @@ export function mapOtelResourceToMonitoredResource(
let mr: MonitoredResource;
if (platform === CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE) {
mr = createMonitoredResource(GCE_INSTANCE, attrs);
} else if (platform === CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE) {
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 (platform === CLOUDPLATFORMVALUES_GCP_APP_ENGINE) {
mr = createMonitoredResource(GAE_INSTANCE, attrs);
} else if (platform === CLOUDPLATFORMVALUES_AWS_EC2) {
Expand All @@ -280,12 +269,24 @@ export function mapOtelResourceToMonitoredResource(
) {
mr = createMonitoredResource(CLOUD_FUNCTION, attrs);
} else {
// fallback to generic_task
if (
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
Expand Down

0 comments on commit 9cebe26

Please sign in to comment.