Я пытаюсь понять, как добавить пары ключ-значение map[string]string в структуру prometheus.Labels.

Если у вас есть опыт работы с Prometheus: я пытаюсь динамически добавлять метки и их значения.

labelsMap := make(map[string]string)
labelsMap["nodepool"] = "default"
labelsMap["zone"] = "europe-west"

// here I'd like to add my key / value pairs from my map
containerLabels := prometheus.Labels{
    "node":      "nodename",
    "container": "foo",
    "qos":       "bar",
}
requestedContainerCPUCoresGauge.With(containerLabels).Set(containerMetric.RequestedCPUCores)

Мой вопрос:

Как я могу динамически добавлять пары ключ / значение из данной карты labelsMap в мои containerLabels?

1
kentor 5 Ноя 2018 в 15:27

1 ответ

Лучший ответ

Вы можете использовать простой цикл for range для labelsMap и добавить каждую пару, например:

containerLabels := prometheus.Labels{}
for k, v := range labelsMap {
    containerLabels[k] = v
}

Или, поскольку prometheus.Labels - это просто карта:

type Labels map[string]string

А если вы не хотите впоследствии изменять labelsMap, простой тип преобразование также работает:

containerLabels := prometheus.Labels(labelsMap)
1
icza 5 Ноя 2018 в 12:41