-1

I have created this monitoring class that updates some Counter Metrics according to some logic. I have attached the code. Please can someone explain to me why would my registry be empty even after I add the test metric.

import logging
from prometheus_client import (
    CollectorRegistry,
    Counter,
    start_http_server
)

class Reporter:
    def __init__(self):
        self._set_counters()
        start_http_server(8080, registry=self.registry)

    def _set_counters(self):
        self.registry = CollectorRegistry()
        self.bycounter = Counter(
                'bycounter',
                'blah blah',
                ['by', 'level0top'],
                registry=self.registry
            )
        self.bycounter.labels(by='test', level0top='test').inc()

I am trying to test the metrics like

import unittest

from sc_eol.monitoring import TodayDataReporter
from sc_eol.sc_eol_utils import generate_query_url

reporter = TodayDataReporter()

class TestTodayDataReporter(unittest.TestCase):
    @staticmethod
    def test_publish():
        by = 'level1'
        parse_query = {'level0top' : 'WSJ2', 'date' : '2021-11-01'}
        start = '2021-11-01'

        
        print(dir(reporter.registry))
        reporter.registry.collect()
        before = reporter.registry.get_sample_value('bycounter', ['level1', 'WSJ2'])
        print("BEFOREEE", before)
        reporter.registry.collect()
        generate_query_url(by, start, parse_query, reporter)
        before = reporter.registry.get_sample_value('bycounter', {'by':'level1', 'level0top': 'WSJ2'})
        reporter.registry.collect()
        print("After", before)

if __name__ == "__main__":
    unittest.main()

Why is the bycounter None?

  1. How do I test if a server is running at port 8080 or not
Shivangi Singh
  • 1,001
  • 2
  • 11
  • 20

1 Answers1

0

before = reporter.registry.get_sample_value('bycounter', ['level1', 'WSJ2'])

The counter is being renamed as bycounter_total

Shivangi Singh
  • 1,001
  • 2
  • 11
  • 20