Le query PromQL in Google Cloud Managed Service per Prometheus vengono valutate parzialmente nel backend di Monarch utilizzando Monitoring Query Language (MQL) e sono note alcune differenze nei risultati delle query. Questo documento descrive le differenze.
A parte le differenze elencate in questo documento, PromQL in Managed Service per Prometheus è in parità con PromQL disponibile in Prometheus versione 2.44.Le funzioni PromQL aggiunte dopo la versione 2.44 di Prometheus potrebbero non essere supportate.
Corrispondenza per i nomi delle metriche
È supportata solo la corrispondenza esatta dei nomi delle metriche. Devi includere una corrispondenza esatta del nome della metrica nella query.
Per gli scenari comuni che utilizzano una corrispondenza di espressioni regolari nell'etichetta __name__
, consigliamo le seguenti soluzioni alternative:
- Le configurazioni dell'adattatore Prometheus utilizzano spesso l'operatore
=~
per trovare corrispondenze su più nomi di metriche. Per correggere questo utilizzo, espandi la configurazione per utilizzare un criterio distinto per ogni metrica e assegna un nome esplicito a ogni metrica. Inoltre, viene evitata la scalabilità automatica accidentale in base a metriche impreviste. - Le espressioni regolari vengono spesso utilizzate per visualizzare graficamente più metriche non dimensionali nello stesso grafico. Ad esempio, se hai una metrica come
cpu_servicename_usage
, puoi utilizzare un carattere jolly per tracciare tutti i tuoi servizi insieme. L'utilizzo di metriche non dimensionali come questa è una cattiva prassi esplicita in Cloud Monitoring e porta a un rendimento estremamente scadente delle query. Per correggere questo utilizzo, sposta tutta la dimensionalità nelle etichette delle metriche anziché incorporare le dimensioni nel nome della metrica. - L'esecuzione di query su più metriche viene spesso utilizzata per vedere quali metriche sono disponibili per le query. Ti consigliamo di utilizzare la chiamata
/labels/__name__/values
per scoprire le metriche. Puoi anche scoprire le metriche utilizzando l'interfaccia utente di Cloud Monitoring. - La corrispondenza di più metriche è utile per vedere quanti campioni sono stati estratti, importati e addebitati in base alla metrica. Cloud Monitoring fornisce queste informazioni nella pagina Gestione delle metriche. Puoi anche accedere a queste informazioni come dati delle metriche utilizzando la metrica Samples Ingested o la metrica Samples Written by Attribution ID.
Mancato aggiornamento
L'attributo Staleness non è supportato nel backend di Monarch.
Calcolo di irate
Quando l'intervallo di ricerca della funzione irate
è inferiore alla dimensione del passaggio, aumentiamo l'intervallo fino alla dimensione del passaggio.
Monarch richiede questa modifica per garantire che nessuno dei dati di input venga completamente ignorato nell'output. Questa differenza si applica anche ai calcoli di rate
.
Calcolo di rate
e increase
Quando l'intervallo di ricerca della funzione rate
è inferiore alla dimensione del passaggio, aumentiamo l'intervallo fino alla dimensione del passaggio.
Monarch richiede questa modifica per garantire che nessuno dei dati di input
venga completamente ignorato nell'output. Questa differenza si applica anche ai calcoli di irate
.
Esistono differenze nei calcoli di interpolazione ed estrapolazione. Monarch utilizza un algoritmo di interpolazione diverso da Prometheus e questa differenza può portare a risultati leggermente diversi. Ad esempio, i campioni dei contatori Monarch vengono archiviati con un intervallo di tempo anziché con il singolo timestamp utilizzato da Prometheus. Pertanto, i campioni del contatore in Monarch possono essere inclusi nel calcolo di una tariffa anche se il timestamp di Prometheus li escluderebbe. In genere, questo comporta risultati più precisi per le tariffe, in particolare quando esegui query sull'inizio o sulla fine della serie temporale sottostante.
Calcolo di histogram_quantile
Un calcolo histogram_quantile
PromQL su un istogramma senza campioni produce un valore NaN. Il calcolo del linguaggio di query interno non produce alcun valore; il punto al timestamp viene ignorato.
Le differenze di calcolo del tasso possono influire anche sui dati inseriti nelle query histogram_quantile
.
Funzioni specifiche per tipo su metriche di tipo diverso
Sebbene Prometheus upstream sia a tipi deboli, Monarch è a tipi forti. Ciò significa che l'esecuzione di funzioni specifiche per un singolo tipo su una metrica di tipo diverso (ad esempio l'esecuzione di rate()
su una metrica GAUGE o di histogram_quantile()
su una metrica COUNTER o non tipizzata) non funziona in Managed Service per Prometheus, anche se queste funzioni funzionano in Prometheus esistente.