Source File
resource.go
Belonging Package
contrib.go.opencensus.io/exporter/stackdriver
package stackdriver // import "contrib.go.opencensus.io/exporter/stackdriver"
import (
monitoredrespb
)
const (
stackdriverProjectID = "contrib.opencensus.io/exporter/stackdriver/project_id"
stackdriverLocation = "contrib.opencensus.io/exporter/stackdriver/location"
stackdriverClusterName = "contrib.opencesus.io/exporter/stackdriver/cluster_name"
stackdriverGenericTaskNamespace = "contrib.opencensus.io/exporter/stackdriver/generic_task/namespace"
stackdriverGenericTaskJob = "contrib.opencensus.io/exporter/stackdriver/generic_task/job"
stackdriverGenericTaskID = "contrib.opencensus.io/exporter/stackdriver/generic_task/task_id"
knativeResType = "knative_revision"
knativeServiceName = "service_name"
knativeRevisionName = "revision_name"
knativeConfigurationName = "configuration_name"
knativeNamespaceName = "namespace_name"
appEngineInstanceType = "gae_instance"
appEngineService = "appengine.service.id"
appEngineVersion = "appengine.version.id"
appEngineInstance = "appengine.instance.id"
)
autodetectFunc func() gcp.Interface
autodetectedLabels map[string]string
)
func () {
autodetectOnce = new(sync.Once)
}
var k8sContainerMap = map[string]string{
"project_id": stackdriverProjectID,
"location": resourcekeys.CloudKeyZone,
"cluster_name": resourcekeys.K8SKeyClusterName,
"namespace_name": resourcekeys.K8SKeyNamespaceName,
"pod_name": resourcekeys.K8SKeyPodName,
"container_name": resourcekeys.ContainerKeyName,
}
var k8sPodMap = map[string]string{
"project_id": stackdriverProjectID,
"location": resourcekeys.CloudKeyZone,
"cluster_name": resourcekeys.K8SKeyClusterName,
"namespace_name": resourcekeys.K8SKeyNamespaceName,
"pod_name": resourcekeys.K8SKeyPodName,
}
var k8sNodeMap = map[string]string{
"project_id": stackdriverProjectID,
"location": resourcekeys.CloudKeyZone,
"cluster_name": resourcekeys.K8SKeyClusterName,
"node_name": resourcekeys.HostKeyName,
}
var gcpResourceMap = map[string]string{
"project_id": stackdriverProjectID,
"instance_id": resourcekeys.HostKeyID,
"zone": resourcekeys.CloudKeyZone,
}
var awsResourceMap = map[string]string{
"project_id": stackdriverProjectID,
"instance_id": resourcekeys.HostKeyID,
"region": resourcekeys.CloudKeyRegion,
"aws_account": resourcekeys.CloudKeyAccountID,
}
var appEngineInstanceMap = map[string]string{
"project_id": stackdriverProjectID,
"location": resourcekeys.CloudKeyRegion,
"module_id": appEngineService,
"version_id": appEngineVersion,
"instance_id": appEngineInstance,
}
var genericResourceMap = map[string]string{
"project_id": stackdriverProjectID,
"location": resourcekeys.CloudKeyZone,
"namespace": stackdriverGenericTaskNamespace,
"job": stackdriverGenericTaskJob,
"task_id": stackdriverGenericTaskID,
}
var knativeRevisionResourceMap = map[string]string{
"project_id": stackdriverProjectID,
"location": resourcekeys.CloudKeyZone,
"cluster_name": resourcekeys.K8SKeyClusterName,
knativeServiceName: knativeServiceName,
knativeRevisionName: knativeRevisionName,
knativeConfigurationName: knativeConfigurationName,
knativeNamespaceName: knativeNamespaceName,
}
func () map[string]string {
autodetectOnce.Do(func() {
autodetectedLabels = map[string]string{}
if := autodetectFunc(); != nil {
if , := ["zone"]; {
["location"] = ["zone"]
}
autodetectedLabels =
}
})
return autodetectedLabels
}
if , := getAutodetectedLabels()[]; {
[] =
continue
}
if != "project_id" {
return nil, true
}
}
return , false
}
func ( *resource.Resource) *monitoredrespb.MonitoredResource {
:= genericResourceMap
:= &monitoredrespb.MonitoredResource{
Type: "global",
}
if == nil || .Labels == nil {
return
}
switch {
case .Type == resourcekeys.ContainerType:
.Type = "k8s_container"
= k8sContainerMap
case .Type == resourcekeys.K8SType:
.Type = "k8s_pod"
= k8sPodMap
case .Type == resourcekeys.HostType && .Labels[resourcekeys.K8SKeyClusterName] != "":
.Type = "k8s_node"
= k8sNodeMap
case .Type == appEngineInstanceType:
.Type = appEngineInstanceType
= appEngineInstanceMap
case .Labels[resourcekeys.CloudKeyProvider] == resourcekeys.CloudProviderGCP:
.Type = "gce_instance"
= gcpResourceMap
case .Labels[resourcekeys.CloudKeyProvider] == resourcekeys.CloudProviderAWS:
.Type = "aws_ec2_instance"
= awsResourceMap
case .Type == knativeResType:
.Type = .Type
= knativeRevisionResourceMap
}
var bool
.Labels, = transformResource(, .Labels)
if {
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |