Home > front end >  Submitted metrics not showing up on prometheus endpoint
Submitted metrics not showing up on prometheus endpoint

Time:07-25

I have a code which looks like this, it is supposed to collect some custom metrics and expose it over prometheus.

def collect_metrics():
    registry = prometheus_client.CollectorRegistry()
    label_names = ['parent', 'namespace','team', 'name', 'status']
    sib = Gauge(f'disk_sizeInBytes','Gets the size of the disk in bytes.', label_names, registry=registry)
    msib = Gauge(f'disk_maxSizeInMegabytes', 'Gets or sets the maximum size of the disk in megabytes, which is the size of memory allocated for the disk.', label_names, registry=registry)
    
    ...

    sib.labels(parent=parent_name, namespace=namespace_name, team=team, name=disk_name, status=disk_status).set(disk_list[dp]["sizeInBytes"])
    msib.labels(parent=parent_name, namespace=namespace_name, team=team, name=disk_name, status=disk_status).set(disk_list[dp]["maxSizeInMegabytes"])
    print(f'{datetime.datetime.now()} | disk_name: {disk_name} | sib: {disk_list[dp]["sizeInBytes"]} | msib: {disk_list[dp]["maxSizeInMegabytes"]}')

    ...
if __name__ == '__main__':
    ...
    start_htdp_server(8005)
    collect_metrics()

The code works fine without any errors, however I don’t see anything being shown over endpoint http://localhost:8005/, though i see some default metrics being shown such as:

# HELP python_gc_objects_collected_total Objects collected during gc
# TYPE python_gc_objects_collected_total counter
python_gc_objects_collected_total{generation="0"} 403.0
python_gc_objects_collected_total{generation="1"} 0.0
python_gc_objects_collected_total{generation="2"} 0.0
# HELP python_gc_objects_uncollectable_total Uncollectable object found during GC
# TYPE python_gc_objects_uncollectable_total counter
python_gc_objects_uncollectable_total{generation="0"} 0.0
python_gc_objects_uncollectable_total{generation="1"} 0.0
python_gc_objects_uncollectable_total{generation="2"} 0.0
# HELP python_gc_collections_total Number of times this generation was collected
# TYPE python_gc_collections_total counter
python_gc_collections_total{generation="0"} 39.0
python_gc_collections_total{generation="1"} 3.0
python_gc_collections_total{generation="2"} 0.0
# HELP python_info Python platform information
# TYPE python_info gauge
python_info{implementation="CPython",major="3",minor="10",patchlevel="4",version="3.10.4"} 1.0

Can someone point me, what is the issue here?

CodePudding user response:

Couple of things:

  1. Remove registry = prometheus_client.CollectorRegistry()
  2. Remove registry=registry from the Gauge declarations
  3. Add a loop to keep the process running.
import datetime
import re
import time

from prometheus_client import CollectorRegistry,Gauge
from prometheus_client import start_http_server

def collect_metrics():
    label_names = ['parent', 'namespace','team', 'name', 'status']
    sib = Gauge(
        'disk_sizeInBytes',
        'Gets the size of the disk in bytes.',
        label_names,
    )
    msib = Gauge(
        'disk_maxSizeInMegabytes',
        'Gets or sets the maximum size of the disk in megabytes, which is the size of memory allocated for the disk.',
        label_names,
    )

    sib.labels(
        parent="parent_name",
        namespace="namespace_name",
        team="team",
        name="disk_name",
        status="disk_status",
    ).set(10.0)
    
    msib.labels(
        parent="parent_name",
        namespace="namespace_name",
        team="team",
        name="disk_name",
        status="disk_status",
    ).set(5.0)


if __name__ == '__main__':
    ...
    start_http_server(8005)
    collect_metrics()
    while True:
        time.sleep(5)
# HELP disk_sizeInBytes Gets the size of the disk in bytes.
# TYPE disk_sizeInBytes gauge
disk_sizeInBytes{name="disk_name",namespace="namespace_name",parent="parent_name",status="disk_status",team="team"} 10.0
# HELP disk_maxSizeInMegabytes Gets or sets the maximum size of the disk in megabytes, which is the size of memory allocated for the disk.
# TYPE disk_maxSizeInMegabytes gauge
disk_maxSizeInMegabytes{name="disk_name",namespace="namespace_name",parent="parent_name",status="disk_status",team="team"} 5.0
  • Related