Динамические метки прометея в Gauge - PullRequest
0 голосов
/ 05 ноября 2018

Интересно, возможно ли добавить динамические метки? Я не знаю ключ или количество меток, которые я хотел бы добавить к своим значениям датчика.

Что я пробовал

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, и не допускает дальнейшие метки. Как я могу создать датчик, который позволяет дополнительные (неизвестные) метки?

...