Aller au contenu

Prometheus

  • 2e projet graduated CNCF apres K8S, provient de Soundcloud
  • pas de logs (event-based), pas de tracing (timings, qui passe par où)
  • uniquement time series metrics
  • pull-based model
  • crée pour les environnements dynamiques / scalables type cloud

comment ça marche

Prom cherche un /metrics sur les targets (ex sur lui meme: localhost:9090/metrics) qui donne les metrics à scraper

archi

  • service centralisé: prometheus
  • targets = les applications à checker, ou des exporters (qui permettent de checker des trucs plus exotiques genre kernel linux)
  • par dessus prometheus, on pose grafana et des fois un alertmanager qui push les alertes
  • Exporters: binaries qui permettent d'exposer les /metrics sur les applis non instrumentées

  • Metrics format: none in particular, check OpenTelemetry

data model

id = (time0, value0), (time1, value 1))

= timeseries

label dimensions (ex: http_request_total where job="nginx" status="500")

promQL

  • expressions (tri, etc)
  • graphs
  • décrire des alertes avec syntaxe "if"

operating

Prometheus weak point

NO clustering, on en run 2 et c tout

local storage: non durable, juste pour quelques semaines ou mois de données

avec un adapter: envoyer vers influxDB par ex ("decoupled remote storage")

Service discovery

choose your strategy: kube, dns A records...