github.com/galamsiva2020/kubernetes-heapster-monitoring@v0.0.0-20210823134957-3c1baa7c1e70/metrics/core/labels.go (about) 1 // Copyright 2015 Google Inc. All Rights Reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package core 16 17 // Definition of labels supported in MetricSet. 18 19 var ( 20 LabelMetricSetType = LabelDescriptor{ 21 Key: "type", 22 Description: "Type of the metrics set (container, pod, namespace, node, cluster)", 23 } 24 MetricSetTypeSystemContainer = "sys_container" 25 MetricSetTypePodContainer = "pod_container" 26 MetricSetTypePod = "pod" 27 MetricSetTypeNamespace = "ns" 28 MetricSetTypeNode = "node" 29 MetricSetTypeCluster = "cluster" 30 31 LabelPodId = LabelDescriptor{ 32 Key: "pod_id", 33 Description: "The unique ID of the pod", 34 } 35 LabelPodName = LabelDescriptor{ 36 Key: "pod_name", 37 Description: "The name of the pod", 38 } 39 LabelNamespaceName = LabelDescriptor{ 40 Key: "namespace_name", 41 Description: "The name of the namespace", 42 } 43 LabelPodNamespaceUID = LabelDescriptor{ 44 Key: "namespace_id", 45 Description: "The UID of namespace of the pod", 46 } 47 LabelContainerName = LabelDescriptor{ 48 Key: "container_name", 49 Description: "User-provided name of the container or full container name for system containers", 50 } 51 LabelLabels = LabelDescriptor{ 52 Key: "labels", 53 Description: "Comma-separated list of user-provided labels", 54 } 55 LabelNodename = LabelDescriptor{ 56 Key: "nodename", 57 Description: "nodename where the container ran", 58 } 59 LabelHostname = LabelDescriptor{ 60 Key: "hostname", 61 Description: "Hostname where the container ran", 62 } 63 LabelResourceID = LabelDescriptor{ 64 Key: "resource_id", 65 Description: "Identifier(s) specific to a metric", 66 } 67 LabelHostID = LabelDescriptor{ 68 Key: "host_id", 69 Description: "Identifier specific to a host. Set by cloud provider or user", 70 } 71 LabelContainerBaseImage = LabelDescriptor{ 72 Key: "container_base_image", 73 Description: "User-defined image name that is run inside the container", 74 } 75 // The label is populated only for GCM 76 LabelCustomMetricName = LabelDescriptor{ 77 Key: "custom_metric_name", 78 Description: "User-defined name of the exported custom metric", 79 } 80 LabelGCEResourceID = LabelDescriptor{ 81 Key: "resource_id", 82 Description: "Resource id for nodes specific for GCE.", 83 } 84 LabelGCEResourceType = LabelDescriptor{ 85 Key: "resource_type", 86 Description: "Resource types for nodes specific for GCE.", 87 } 88 LabelNodeSchedulable = LabelDescriptor{ 89 Key: "schedulable", 90 Description: "Node schedulable status.", 91 } 92 LabelVolumeName = LabelDescriptor{ 93 Key: "volume_name", 94 Description: "The name of the volume.", 95 } 96 LabelAcceleratorMake = LabelDescriptor{ 97 Key: "make", 98 Description: "Make of the accelerator (nvidia, amd, google etc.)", 99 } 100 LabelAcceleratorModel = LabelDescriptor{ 101 Key: "model", 102 Description: "Model of the accelerator (tesla-p100, tesla-k80 etc.)", 103 } 104 LabelAcceleratorID = LabelDescriptor{ 105 Key: "accelerator_id", 106 Description: "ID of the accelerator", 107 } 108 ) 109 110 type LabelDescriptor struct { 111 // Key to use for the label. 112 Key string `json:"key,omitempty"` 113 114 // Description of the label. 115 Description string `json:"description,omitempty"` 116 } 117 118 var commonLabels = []LabelDescriptor{ 119 LabelNodename, 120 LabelHostname, 121 LabelHostID, 122 } 123 124 var containerLabels = []LabelDescriptor{ 125 LabelContainerName, 126 LabelContainerBaseImage, 127 } 128 129 var podLabels = []LabelDescriptor{ 130 LabelPodName, 131 LabelPodId, 132 LabelPodNamespaceUID, 133 LabelLabels, 134 } 135 136 var metricLabels = []LabelDescriptor{ 137 LabelResourceID, 138 } 139 140 var customMetricLabels = []LabelDescriptor{ 141 LabelCustomMetricName, 142 } 143 144 var acceleratorLabels = []LabelDescriptor{ 145 LabelAcceleratorMake, 146 LabelAcceleratorModel, 147 LabelAcceleratorID, 148 } 149 150 // Labels exported to GCM. The number of labels that can be exported to GCM is limited by 10. 151 var gcmLabels = []LabelDescriptor{ 152 LabelMetricSetType, 153 LabelPodName, 154 LabelNamespaceName, 155 LabelHostname, 156 LabelHostID, 157 LabelContainerName, 158 LabelContainerBaseImage, 159 LabelCustomMetricName, 160 LabelResourceID, 161 } 162 163 var gcmNodeAutoscalingLabels = []LabelDescriptor{ 164 LabelGCEResourceID, 165 LabelGCEResourceType, 166 LabelHostname, 167 } 168 169 func CommonLabels() []LabelDescriptor { 170 result := make([]LabelDescriptor, len(commonLabels)) 171 copy(result, commonLabels) 172 return result 173 } 174 175 func ContainerLabels() []LabelDescriptor { 176 result := make([]LabelDescriptor, len(containerLabels)) 177 copy(result, containerLabels) 178 return result 179 } 180 181 func PodLabels() []LabelDescriptor { 182 result := make([]LabelDescriptor, len(podLabels)) 183 copy(result, podLabels) 184 return result 185 } 186 187 func MetricLabels() []LabelDescriptor { 188 result := make([]LabelDescriptor, len(metricLabels)+len(customMetricLabels)) 189 copy(result, metricLabels) 190 copy(result, customMetricLabels) 191 return result 192 } 193 194 func SupportedLabels() []LabelDescriptor { 195 result := CommonLabels() 196 result = append(result, PodLabels()...) 197 return append(result, MetricLabels()...) 198 } 199 200 func GcmLabels() map[string]LabelDescriptor { 201 result := make(map[string]LabelDescriptor, len(gcmLabels)) 202 for _, l := range gcmLabels { 203 result[l.Key] = l 204 } 205 return result 206 } 207 func GcmNodeAutoscalingLabels() map[string]LabelDescriptor { 208 result := make(map[string]LabelDescriptor, len(gcmNodeAutoscalingLabels)) 209 for _, l := range gcmNodeAutoscalingLabels { 210 result[l.Key] = l 211 } 212 return result 213 }