Интересно, возможно ли добавить динамические метки? Я не знаю ключ или количество меток, которые я хотел бы добавить к своим значениям датчика.
Что я пробовал
labelsContainers = []string{"node", "container", "pod", "qos", "namespace", "nodepool"}
// Requested resources
requestedContainerCPUCoresGauge = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Namespace: namespace,
Subsystem: "pod_container_resource_requests",
Name: "cpu_cores",
Help: "Requested CPU cores in Kubernetes configuration",
},
labelsContainers)
for _, containerMetric := range containerMetrics {
containerLabels := prometheus.Labels{
"node": containerMetric.Node,
"container": containerMetric.Container,
"qos": containerMetric.Qos,
"pod": containerMetric.Pod,
"namespace": containerMetric.Namespace,
}
for key, value := range containerMetric.NodeLabels {
containerLabels[key] = value
}
requestedContainerCPUCoresGauge.With(containerLabels).Set(containerMetric.RequestedCPUCores)
requestedContainerRAMBytesGauge.With(containerLabels).Set(containerMetric.RequestedMemoryBytes)
}
Проблема
Это вызывает панику. Я предполагаю, что это потому, что клиент выпускного вечера ожидает именно те метки, которые определены в labelsContainers
, и не допускает дальнейшие метки. Как я могу создать датчик, который позволяет дополнительные (неизвестные) метки?