Created
June 11, 2022 19:51
-
-
Save sourceperl/5e2933a3b2f56676d7c7508656a03b3c to your computer and use it in GitHub Desktop.
Basic HTTP endpoint for Prometheus
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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