Fix Prometheus counters

default to gauage

Change-Id: Ia0428e61f023f10b02b3ebe103870d40c057abe3

Change values in question to gauges

Change-Id: I81c91c880246342a0ad0586f6dbe50b247a01117

fixes

Change-Id: I949438d3d3b511c22649640e082b59a3fb7696e0

Fix info handling

Change-Id: I8091fbfa55ba5a9c21c4569dd40e37fb432924f3

fix default

Change-Id: Ia449fed18730a06a858107e9218dc7b443a681fb
Esse commit está contido em:
adapryor
2024-10-04 08:15:40 -05:00
commit de Galantsev, Dmitrii
commit e847f74f78
2 arquivos alterados com 81 adições e 7 exclusões
+42 -7
Ver Arquivo
@@ -1,8 +1,11 @@
import argparse
import os
from RdcReader import RdcReader
from RdcUtil import RdcUtil
from rdc_bootstrap import *
from prometheus_client import start_http_server, Gauge, REGISTRY, PROCESS_COLLECTOR, PLATFORM_COLLECTOR
from prometheus_client import start_http_server, Gauge, Counter, Info, REGISTRY, PROCESS_COLLECTOR, PLATFORM_COLLECTOR
os.environ['PROMETHEUS_DISABLE_CREATED_SERIES'] = "True"
default_field_ids = [
rdc_field_t.RDC_FI_GPU_MEMORY_USAGE,
@@ -35,16 +38,48 @@ class PrometheusReader(RdcReader):
REGISTRY.unregister(PROCESS_COLLECTOR)
REGISTRY.unregister(PLATFORM_COLLECTOR)
# Create the gauges
self.guages = {}
# Create the metrics
self.gauges = {}
self.counters = {}
self.infos = {}
for fid in self.field_ids:
field_name = self.rdc_util.field_id_string(fid).lower()
self.guages[fid] = Gauge(field_name, field_name, labelnames=['gpu_index'])
field_name = self.rdc_util.field_id_string(fid)
rdc_metric_type = rdc_field_t.get_rdc_metric_type(rdc_field_t.get_field_name(fid))
field_name = field_name.lower()
if rdc_metric_type == 1:
self.gauges[fid] = Gauge(field_name, field_name, labelnames=['gpu_index'])
elif rdc_metric_type == 2:
self.counters[fid] = Counter(field_name, field_name, labelnames=['gpu_index'])
else:
self.infos[fid] = Info(field_name, field_name, labelnames=['gpu_index'])
def handle_field(self, gpu_index, value):
gpu_label = gpu_index
if value.field_id.value in self.guages:
self.guages[value.field_id.value].labels(gpu_label).set(value.value.l_int)
if value.field_id.value in self.gauges:
self.gauges[value.field_id.value].labels(gpu_label).set(value.value.l_int)
elif value.field_id.value in self.counters:
self.counters[value.field_id.value].labels(gpu_label).inc(value.value.l_int)
else:
self.infos[value.field_id.value].labels(gpu_label).info({'gpu_label': self.process_value(value)})
def process_value(self, value):
if value.type.value == rdc_field_type_t.INTEGER:
return str(value.value.l_int)
elif value.type.value == rdc_field_type_t.DOUBLE:
return str(value.value.d_float)
elif value.type.value == rdc_field_type_t.STRING:
return value.value.str.decode('utf-8', 'ignore')
elif value.type.value == rdc_field_type_t.BLOB:
return value.value.str.hex()
else:
return "unknown"
def get_field_ids(args):
field_ids = []