Prometheus: monitoring e alerting per il cloud-native

Prometheus introduce un modello pull per il monitoring con time series multidimensionali, PromQL, service discovery e alerting integrato, diventando il secondo progetto CNCF dopo Kubernetes.

Open SourceWeb Open SourcePrometheusMonitoringAlertingCNCFTime Series

Da SoundCloud alla CNCF

Gli strumenti di monitoring tradizionali faticano a gestire infrastrutture dove i servizi nascono e muoiono in continuazione: container orchestrati, microservizi scalati dinamicamente, istanze effimere che cambiano indirizzo IP ogni pochi minuti. Prometheus, nato internamente a SoundCloud dal lavoro di ex ingegneri Google — tra cui Matt Proud e Julius Volz, che portano l’esperienza maturata con il sistema di monitoring interno di Google, Borgmon — affronta specificamente questo scenario.

Nel 2016 Prometheus entra nella Cloud Native Computing Foundation (CNCF) come secondo progetto ospitato, subito dopo Kubernetes. L’inclusione segnala che la comunità cloud-native considera il monitoring allo stesso livello di importanza dell’orchestrazione dei container.

Modello pull e time series multidimensionali

A differenza dei sistemi di monitoring tradizionali basati su push — dove gli agenti inviano metriche a un collettore centrale — Prometheus adotta un modello pull: è il server a interrogare periodicamente gli endpoint /metrics esposti dai target. Questo approccio semplifica la configurazione dei servizi monitorati, che devono solo esporre un endpoint HTTP, e permette a Prometheus di sapere immediatamente quando un target non è raggiungibile.

Le metriche sono organizzate come time series multidimensionali: ogni serie è identificata da un nome e da un insieme di coppie chiave-valore chiamate label. Ad esempio, una metrica http_requests_total può avere label come method="GET", handler="/api/users", status="200". Le label permettono di filtrare, aggregare e correlare metriche in modi che i sistemi tradizionali basati su gerarchie di nomi non consentono.

PromQL e service discovery

PromQL è il linguaggio di query progettato per interrogare le time series. Permette operazioni come tassi di variazione, aggregazioni, filtri e join tra metriche diverse. La service discovery consente a Prometheus di trovare automaticamente i target da monitorare — integrandosi con Kubernetes, Consul, DNS, file statici e altri meccanismi — senza richiedere configurazioni manuali per ogni nuova istanza.

Alerting integrato

L’Alertmanager, componente separato ma parte dell’ecosistema, gestisce le notifiche: riceve gli alert generati dalle regole definite in Prometheus, li raggruppa, li deduplica e li instrada verso canali come email, Slack o PagerDuty. Prometheus salva i dati in uno storage locale ottimizzato per le time series, con un modello di persistenza progettato per efficienza e velocità piuttosto che per durabilità a lungo termine.

Link: prometheus.io

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi