Как добавить больше информации в Prometheus Gauge? - PullRequest
0 голосов
/ 02 марта 2020

Я хочу отслеживать статистику различных подпроцессов, которые выполняются в модулях в разных пространствах имен с помощью Prometheus, и я ищу способ правильно представить эту информацию.

Мой кластер похож на ниже:

cluster
├── ns1
│   ├── ns1-pod1
│   │   ├── proc-p1-1
│   │   └── proc-p1-2
│   └── ns1-pod2
│       ├── proc-p2-1
│       └── proc-p2-2
└── ns2
    ├── ns2-pod1
    │   ├── proc-p1-1
    │   └── proc-p1-2
    └── ns2-pod2
        ├── proc-p2-1
        └── proc-p2-2

Каждый модуль публикует статистику своих процессов в RabbitMQ с указанным c ключом маршрутизации, и я могу читать статистику оттуда.

Я написал экспортер, который может подключаться к RMQ в одном пространстве имен прочитайте статистику и выставьте ее на /metrics, чтобы Прометей мог ее прочитать. Пример моего экспортера:

// prometheus go client
var MemoryValue = prometheus.NewGauge(
    prometheus.GaugeOpts{
        Namespace: namespace,
        Name:      "MemoryValue",
        Help:      "MemoryValue",
    })

prometheus.MustRegister(MemoryValue)
MemoryValue.Set(opst.Memory.Value) // "opst.Memory.Value" is what I get from RMQ

Проблема в том, что я не знаю, как маркировать метрики для каждого процесса в модуле. Я имею в виду, например, на данный момент у меня есть 4 процесса в ns1, но я выставляю их всех на MemoryValue. Мне нужен способ, похожий на Namespace, чтобы пометить каждый процесс по имени модуля и процесса (у меня есть эта информация, но как добавить их в Прометей?).

1 Ответ

0 голосов
/ 06 марта 2020

Как правильно заметил @Peter, решение заключается в использовании GaugeVec:

var CpuPercentValue = prometheus.NewGaugeVec(
    prometheus.GaugeOpts{
        Namespace: "MyExporter",
        Name:      "CpuPercentValue",
        Help:      "CpuPercentValue",
    },
    []string{
        "namespace",
        "proc_qID",
        "opID",
    },
)

CpuPercentValue.With(prometheus.Labels{"namespace": namespace, "proc_qID": procid, "opID": opid}).Set(opst.CpuPercent.Value)

...