Source code for webapp.expose_metrics

import logging
import traceback

from prometheus_client import exposition
import requests

import settings
from functions.prometheus.generate_prometheus_metrics import generate_prometheus_metrics

skyline_app = 'webapp'
skyline_app_logger = '%sLog' % skyline_app
logger = logging.getLogger(skyline_app_logger)


# @added 20220725 -
[docs]def expose_metrics(): """ Generate Prometheus metrics and expose them. :return: metrics :rtype: str """ scrape_response = None try: generate_prometheus_metrics('webapp') logger.info('/metrics expose_metrics :: generate_prometheus_metrics called') except Exception as err: trace = traceback.format_exc() message = 'error :: expose_metrics :: generate_prometheus_metrics failed - %s' % str(err) logger.error(trace) logger.error('error :: %s' % message) try: scrape_response = exposition.generate_latest() except Exception as err: logger.error(traceback.format_exc()) logger.error('error :: expose_metrics :: exposition.generate_latest failed - %s' % ( err)) if scrape_response: scrape_response = str(scrape_response.decode()) return scrape_response