Curso-lenguaje-python/catch-all/05_infra_test/05_prometheus_grafana/app/main.py

43 lines
1.3 KiB
Python

from prometheus_client import start_http_server, Summary, Counter, Gauge, Histogram
import random
import time
# Create metrics to track time spent, requests made, and other events.
REQUEST_TIME = Summary('request_processing_seconds',
'Time spent processing request')
UPDATE_COUNT = Counter('update_count', 'Number of updates')
ACTIVE_REQUESTS = Gauge('active_requests', 'Number of active requests')
REQUEST_LATENCY = Histogram(
'request_latency_seconds', 'Request latency in seconds')
# Decorate function with metrics.
@REQUEST_TIME.time()
@REQUEST_LATENCY.time()
def process_request(t):
"""A dummy function that takes some time."""
ACTIVE_REQUESTS.inc()
time.sleep(t)
ACTIVE_REQUESTS.dec()
def main():
# Start up the server to expose the metrics.
start_http_server(8000)
print("[*] Starting server on port 8000...")
# Generate some requests.
while True:
msg = random.random()
process_request(msg)
update_increment = random.randint(1, 100)
UPDATE_COUNT.inc(update_increment)
print(
f'[+] Processing request: {msg:.4f} | Updates: {update_increment}')
time.sleep(random.uniform(0.5, 2.0)) # Random delay between requests
if __name__ == '__main__':
main()