Skip to content

Latest commit

 

History

History
116 lines (87 loc) · 1.79 KB

lession10.md

File metadata and controls

116 lines (87 loc) · 1.79 KB

Lession 10

Monitoring

This is optional step as Prometheus is also included in OpenTelementry, which we will do next.

In this example we will only instrument FastApi. There is also an instrumention solution for Celery.

Add dependencies

poetry add prometheus_fastapi_instrumentator

Add Instrumentation

# dispo/dispo/main.py - add
from prometheus_fastapi_instrumentator import Instrumentator as PrometheusInstrumentator

# add beyond app creation
prom_instrumentator = PrometheusInstrumentator().instrument(app)
prom_instrumentator.expose(app)

Add Collector

# prometheus/Dockerfile
FROM prom/prometheus
ADD prometheus.yml /etc/prometheus/

global:
  scrape_interval: "15s"
scrape_configs:
  - job_name: 'dispo'
    static_configs:
    - targets: ['dispo:80']
# deploy/prometheus.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus
  labels:
    app: prometheus
spec:
  selector:
    matchLabels:
      app: prometheus
  template:
    metadata:
      labels:
        app: prometheus
    spec:
      containers:
        - name: prometheus
          image: myprometheus
          ports:
            - containerPort: 9090
          resources:
            limits:
              memory: 256Mi
              cpu: 400m
---
apiVersion: v1
kind: Service
metadata:
  name: prometheus
spec:
  selector:
    app: prometheus
  ports:
    - protocol: TCP
      port: 9090
      targetPort: 9090
# Tiltfile - add
docker_build(
    'myprometheus',
    context='./myprometheus',
    dockerfile='./myprometheus/Dockerfile'
)

k8s_yaml('deploy/prometheus.yaml')

k8s_resource(
    'prometheus',
    port_forwards=['9090:9090']
)

Testing

curl http://localhost:8080/metrics

Prometheus: http://localhost:9090