Я хочу отслеживать статистику различных подпроцессов, которые выполняются в модулях в разных пространствах имен с помощью 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
, чтобы пометить каждый процесс по имени модуля и процесса (у меня есть эта информация, но как добавить их в Прометей?).