Skip to content

Instantly share code, notes, and snippets.

@sourceperl
Created June 11, 2022 19:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sourceperl/5e2933a3b2f56676d7c7508656a03b3c to your computer and use it in GitHub Desktop.
Save sourceperl/5e2933a3b2f56676d7c7508656a03b3c to your computer and use it in GitHub Desktop.
Basic HTTP endpoint for Prometheus
#!/usr/bin/env python3
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
from random import randint
class HandleRequests(BaseHTTPRequestHandler):
"""Custom HTTP handler"""
def version_string(self):
return 'self-service here ;-)'
def do_GET(self):
if self.path == '/metrics':
# prometheus scrap endpoint
# headers
self.send_response(200)
self.send_header('Content-type', 'text/plain; charset=utf-8')
self.end_headers()
# body
metric_name = 'my_metric'
metric_value = randint(0, 100)
msg = f'# HELP {metric_name} Comment line for {metric_name}\n'
msg += f'# TYPE {metric_name} gauge\n'
msg += f'{metric_name} {metric_value}\n'
self.wfile.write(msg.encode())
else:
# nothing for you here
self.send_response(404)
self.end_headers()
# start HTTP server
ThreadingHTTPServer(('0.0.0.0', 8080), HandleRequests).serve_forever()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment