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
