Google Cloud Managed Service per Prometheus addebita il numero di campioni importati in Cloud Monitoring e le richieste di lettura all'API Monitoring. Il numero di campioni importati è il fattore principale che incide sui tuoi costi.
Questo documento descrive come controllare i costi associati all'importazione delle metriche e come identificare le origini dell'importazione di volumi elevati.
Per ulteriori informazioni sui prezzi di Managed Service per Prometheus, consulta Riepilogo dei prezzi di Managed Service per Prometheus.
Visualizzare la fattura
Per visualizzare la fattura di Google Cloud:
Nella console Google Cloud, vai alla pagina Fatturazione.
Se disponi di più di un account di fatturazione, seleziona Vai all'account di fatturazione collegato per visualizzare l'account di fatturazione del progetto attuale. Per trovare un altro account di fatturazione, seleziona Gestisci account di fatturazione e scegli l'account per il quale vuoi ricevere i report sull'utilizzo.
Nella sezione Gestione dei costi del menu di navigazione Fatturazione, seleziona Report.
Dal menu Servizi, seleziona l'opzione Cloud Monitoring.
Dal menu SKU, seleziona le seguenti opzioni:
- Campioni di Prometheus importati
- Monitoraggio delle richieste API
Il seguente screenshot mostra il report di fatturazione per Managed Service per Prometheus di un progetto:
Riduci i costi
Per ridurre i costi associati all'utilizzo di Managed Service per Prometheus, puoi:
- Riduci il numero di serie temporali inviate al servizio gestito filtrando i dati delle metriche generati.
- Riduci il numero di campioni raccolti modificando l'intervallo di scraping.
- Limita il numero di campioni da metriche ad alta cardinalità potenzialmente configurate in modo errato.
Riduci il numero di serie temporali
La documentazione open source di Prometheus consiglia raramente di filtrare il volume delle metriche, il che è ragionevole quando i costi sono limitati dai costi delle macchine. Tuttavia, quando si paga un fornitore di servizi gestiti su base unitaria, l'invio di dati illimitati può causare fatture inutilmente alte.
Gli esportatori inclusi nel progetto kube-prometheus
, in particolare il servizio kube-state-metrics
, possono emettere molti dati di metriche.
Ad esempio, il servizio kube-state-metrics
emette centinaia di metriche,
molte delle quali potrebbero essere completamente prive di valore per te in quanto consumer. Un
cluster a tre nodi aggiornato utilizzando il progetto kube-prometheus
invia
circa 900 campioni al secondo a Managed Service per Prometheus.
Filtrare queste metriche estranee da solo potrebbe essere sufficiente per far scendere la fattura a un livello accettabile.
Per ridurre il numero di metriche, puoi:
- Modifica le tue configurazioni di scraping per eseguire lo scraping di meno destinazioni.
- Filtra le metriche raccolte come descritto di seguito:
- Filtra le metriche esportate quando utilizzi la raccolta gestita.
- Filtra le metriche esportate quando utilizzi la raccolta di cui è stato eseguito il deployment autonomo.
Se utilizzi il servizio kube-state-metrics
, potresti aggiungere una
regola di rietichettatura di Prometheus con un'azione
keep
. Per la raccolta gestita, questa regola viene inserita nella tua definizione di PodMonitoring o
ClusterPodMonitoring. Per
la raccolta con deployment autonomo, questa regola viene inserita nella configurazione
scrape di Prometheus o nella definizione di
ServiceMonitor (per
l'operatore prometheus).
Ad esempio, l'utilizzo del seguente filtro su un nuovo cluster a tre nodi riduce il volume del campione di circa 125 campioni al secondo:
metricRelabeling: - action: keep regex: kube_(daemonset|deployment|pod|namespace|node|statefulset|persistentvolume|horizontalpodautoscaler)_.+ sourceLabels: [__name__]
Il filtro precedente utilizza un'espressione regolare per specificare quali metriche conservare in base al nome della metrica. Ad esempio, vengono mantenute le metriche il cui nome inizia con kube_daemonset_
.
Puoi anche specificare l'azione drop
, che esclude le metriche corrispondenti all'espressione regolare.
A volte, potresti ritenere che un intero esportatore non sia importante. Ad esempio, il pacchetto kube-prometheus
installa per impostazione predefinita i seguenti monitor di servizio, molti dei quali non sono necessari in un ambiente gestito:
alertmanager
coredns
grafana
kube-apiserver
kube-controller-manager
kube-scheduler
kube-state-metrics
kubelet
node-exporter
prometheus
prometheus-adapter
prometheus-operator
Per ridurre il numero di metriche esportate, puoi eliminare, disabilitare o interrompere lo scraping dei monitoraggi dei servizi non necessari. Ad esempio, la disabilitazione del monitoraggio del servizio kube-apiserver
in un cluster a tre nodi aggiornato consente di ridurre il volume del campione di circa 200 campioni al secondo.
Riduci il numero di campioni raccolti
Gli addebiti di Managed Service per Prometheus vengono calcolati su base campione. Puoi ridurre il numero di campioni importati aumentando la durata del periodo di campionamento. Ad esempio:
- La modifica di un periodo di campionamento di 10 secondi in un periodo di 30 secondi può ridurre il volume del campione del 66%, senza perdite di informazioni eccessive.
- La modifica di un periodo di campionamento di 10 secondi in un periodo di 60 secondi può ridurre il volume di campionamento dell'83%.
Per informazioni su come vengono conteggiati i campioni e su come il periodo di campionamento influisce sul numero di campioni, consulta la sezione Esempi di prezzi in base ai campioni importati.
Di solito, puoi impostare l'intervallo di scraping in base al job o al target.
Per la raccolta gestita, puoi impostare l'intervallo di scrape nella
risorsa PodMonitoring
utilizzando il campo interval
.
Per la raccolta di cui è stato eseguito il deployment autonomo, imposta l'intervallo di campionamento nelle configurazioni di scraping, in genere impostando un campo interval
o scrape_interval
.
Configura l'aggregazione locale (solo raccolta di cui è stato eseguito il deployment autonomo)
Se configuri il servizio utilizzando la raccolta con deployment autonomo, ad esempio con kube-prometheus, prometheus-operator, oppure eseguendo il deployment manuale dell'immagine, puoi ridurre i campioni inviati a Managed Service per Prometheus aggregando localmente le metriche ad alta cardinalità. Puoi
utilizzare le regole di registrazione per aggregare le etichette come instance
e utilizzare il
flag --export.match
o la variabile di ambiente
EXTRA_ARGS
per inviare solo dati aggregati a
Monarch.
Ad esempio, supponi di avere tre metriche: high_cardinality_metric_1
, high_cardinality_metric_2
e low_cardinality_metric
. Vuoi ridurre i campioni inviati per high_cardinality_metric_1
ed eliminare tutti i campioni inviati per high_cardinality_metric_2
, conservando al contempo tutti i dati non elaborati archiviati localmente (magari per la generazione di avvisi). La tua configurazione potrebbe avere un aspetto simile a questo:
- Esegui il deployment dell'immagine Managed Service per Prometheus.
- Configura le tue configurazioni di scraping per lo scraping di tutti i dati non elaborati nel server locale (utilizzando il numero di filtri desiderato).
Configura le regole di registrazione per eseguire aggregazioni locali su
high_cardinality_metric_1
ehigh_cardinality_metric_2
, magari aggregando l'etichettainstance
o un qualsiasi numero di etichette delle metriche, a seconda di ciò che garantisce la riduzione migliore nel numero di serie temporali non necessarie. Puoi eseguire una regola simile alla seguente, che elimina l'etichettainstance
e somma le serie temporali risultanti per le etichette rimanenti:record: job:high_cardinality_metric_1:sum expr: sum without (instance) (high_cardinality_metric_1)
Per altre opzioni di aggregazione, consulta gli operatori di aggregazione nella documentazione di Prometheus.
Esegui il deployment dell'immagine Managed Service per Prometheus con il seguente flag di filtro, che impedisce l'invio a Monarch dei dati non elaborati delle metriche elencate:
--export.match='{__name__!="high_cardinality_metric_1",__name__!="high_cardinality_metric_2"}'
In questo flag
export.match
di esempio vengono utilizzati selettori separati da virgole con l'operatore!=
per filtrare i dati non elaborati indesiderati. Se aggiungi ulteriori regole di registrazione per aggregare altre metriche ad alta cardinalità, devi aggiungere anche un nuovo selettore__name__
al filtro, in modo che i dati non elaborati vengano eliminati. Utilizzando un singolo flag contenente più selettori con l'operatore!=
per filtrare i dati indesiderati, devi modificare il filtro solo quando crei una nuova aggregazione, anziché ogni volta che modifichi o aggiungi una configurazione di scrape.Alcuni metodi di deployment, come prometheus-operator, potrebbero richiedere l'omissione delle virgolette singole che racchiudono le parentesi.
Questo flusso di lavoro potrebbe comportare un overhead operativo durante la creazione e la gestione delle regole di registrazione e dei flag export.match
, ma è probabile che tu possa ridurre molto il volume concentrandoti solo sulle metriche con cardinalità eccezionalmente elevata. Per informazioni su come identificare le metriche che potrebbero trarre vantaggio dalla pre-aggregazione locale, consulta Identificare le metriche a volume elevato.
Non implementare la federazione quando utilizzi Managed Service per Prometheus. Questo flusso di lavoro rende obsoleto l'utilizzo dei server federazione, poiché un singolo server Prometheus con deployment autonomo può eseguire qualsiasi aggregazione a livello di cluster di cui potresti aver bisogno. La federazione potrebbe causare effetti imprevisti, come metriche di tipo "sconosciuto" e doppio volume di importazione.
Limita i campioni da metriche ad alta cardinalità (solo raccolta con deployment autonomo)
Puoi creare metriche a cardinalità estremamente elevata aggiungendo etichette che hanno un elevato numero di valori potenziali, come un ID utente o un indirizzo IP. Queste metriche possono generare un numero molto elevato di campioni. L'utilizzo di etichette con un numero elevato di valori in genere è un errore di configurazione. Puoi
evitare le metriche ad alta cardinalità nei raccoglitori di cui è stato eseguito il deployment autonomo
impostando un valore sample_limit
nelle configurazioni di scraping.
Se utilizzi questo limite, ti consigliamo di impostarlo su un valore molto elevato, in modo da rilevare solo metriche palesemente errate. Tutti i campioni che superano il limite vengono eliminati e può essere molto difficile diagnosticare i problemi causati dal superamento del limite.
L'utilizzo di un limite di campioni non è un buon modo per gestire l'importazione di campioni, ma il limite può proteggerti da errori di configurazione accidentali. Per maggiori
informazioni, consulta
Utilizzo di sample_limit
per evitare il sovraccarico.
Identificare e attribuire i costi
Puoi utilizzare Cloud Monitoring per identificare le metriche Prometheus che scrivono il maggior numero di campioni. Queste metriche contribuiscono maggiormente ai tuoi costi. Dopo aver identificato le metriche più costose, puoi modificare le configurazioni di scrape per filtrarle in modo appropriato.
La pagina Gestione delle metriche di Cloud Monitoring fornisce informazioni che possono aiutarti a controllare l'importo speso per le metriche addebitabili senza influire sull'osservabilità. La pagina Gestione delle metriche riporta le seguenti informazioni:
- Volumi di importazione per la fatturazione basata sia su byte che su campioni, nei domini delle metriche e per singole metriche.
- Dati su etichette e cardinalità delle metriche.
- Utilizzo di metriche nei criteri di avviso e nelle dashboard personalizzate.
- Percentuale di errori di scrittura delle metriche.
Per visualizzare la pagina Gestione delle metriche, segui questi passaggi:
-
Nella console Google Cloud, vai alla pagina
Gestione delle metriche:Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.
- Nella barra degli strumenti, seleziona la finestra temporale. Per impostazione predefinita, la pagina Gestione delle metriche mostra informazioni sulle metriche raccolte il giorno precedente.
Per saperne di più sulla pagina Gestione delle metriche, consulta Visualizzare e gestire l'utilizzo delle metriche.
Le seguenti sezioni descrivono i modi per analizzare il numero di campioni che invii a Managed Service per Prometheus e attribuire volumi elevati a metriche specifiche, a spazi dei nomi Kubernetes e a regioni Google Cloud.
Identifica metriche di volume elevato
Per identificare le metriche Prometheus con i maggiori volumi di importazione, segui questi passaggi:
-
Nella console Google Cloud, vai alla pagina
Gestione delle metriche:Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.
- Nel prospetto Campioni fatturabili importati, fai clic su Visualizza grafici.
- Individua il grafico Importazione del volume dello spazio dei nomi e fai clic su more_vert Altre opzioni del grafico.
- Seleziona l'opzione del grafico Visualizza in Esplora metriche.
- Nel riquadro Builder di Metrics Explorer, modifica i campi come segue:
- Nel campo Metrica, verifica che siano selezionate le risorse e le metriche seguenti:
Metric Ingestion Attribution
eSamples written by attribution id
. - Nel campo Aggregazione, seleziona
sum
. - Per il campo per, seleziona
le seguenti etichette:
attribution_dimension
metric_type
- Per il campo Filtro, utilizza
attribution_dimension = namespace
. Devi eseguire questa operazione dopo aver eseguito l'aggregazione tramite l'etichettaattribution_dimension
.
Il grafico risultante mostra i volumi di importazione per ciascun tipo di metrica.
- Nel campo Metrica, verifica che siano selezionate le risorse e le metriche seguenti:
- Per visualizzare il volume di importazione per ciascuna delle metriche, seleziona Entrambe nel pulsante di attivazione/disattivazione con etichetta Tabella entrambe le tabelle. La tabella mostra il volume importato per ogni metrica nella colonna Valore.
- Fai clic due volte sull'intestazione della colonna Valore per ordinare le metriche in base al volume di importazione decrescente.
Il grafico risultante, che mostra le tue metriche principali per volume classificati per
media, ha l'aspetto del seguente screenshot:
Identificare gli spazi dei nomi ad alto volume
Per attribuire il volume di importazione a specifici spazi dei nomi Kubernetes:
-
Nella console Google Cloud, vai alla pagina
Gestione delle metriche:Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.
- Nel prospetto Campioni fatturabili importati, fai clic su Visualizza grafici.
- Individua il grafico Importazione del volume dello spazio dei nomi e fai clic su more_vert Altre opzioni del grafico.
- Seleziona l'opzione del grafico Visualizza in Esplora metriche.
- Nel riquadro Builder di Metrics Explorer, modifica i campi come segue:
- Nel campo Metrica, verifica che siano selezionate le risorse e le metriche seguenti:
Metric Ingestion Attribution
eSamples written by attribution id
. - Configura gli altri parametri di ricerca in modo appropriato:
- Per correlare il volume complessivo di importazione agli spazi dei nomi:
- Nel campo Aggregazione, seleziona
sum
. - Per il campo per, seleziona le
seguenti etichette:
attribution_dimension
attribution_id
- Per il campo Filtro, utilizza
attribution_dimension = namespace
.
- Nel campo Aggregazione, seleziona
- Per correlare il volume di importazione delle singole metriche con gli spazi dei nomi:
- Nel campo Aggregazione, seleziona
sum
. - Per il campo per, seleziona
le seguenti etichette:
attribution_dimension
attribution_id
metric_type
- Per il campo Filtro, utilizza
attribution_dimension = namespace
.
- Nel campo Aggregazione, seleziona
- Per identificare gli spazi dei nomi responsabili di una specifica metrica ad alto volume:
- Identifica il tipo di metrica per la metrica con volume elevato utilizzando uno degli altri esempi per identificare i tipi di metrica con volume elevato. Il tipo di metrica è la stringa nella visualizzazione tabella che inizia con
prometheus.googleapis.com/
. Per maggiori informazioni, consulta Identificare metriche a volumi elevati. - Limita i dati del grafico al tipo di metrica identificato aggiungendo un filtro per il tipo di metrica nel campo Filtro. Ad esempio:
metric_type= prometheus.googleapis.com/container_tasks_state/gauge
. - Nel campo Aggregazione, seleziona
sum
. - Per il campo per, seleziona
le seguenti etichette:
attribution_dimension
attribution_id
- Per il campo Filtro, utilizza
attribution_dimension = namespace
.
- Identifica il tipo di metrica per la metrica con volume elevato utilizzando uno degli altri esempi per identificare i tipi di metrica con volume elevato. Il tipo di metrica è la stringa nella visualizzazione tabella che inizia con
- Per visualizzare l'importazione per regione Google Cloud, aggiungi
l'etichetta
location
al campo per. - Per visualizzare l'importazione da parte del progetto Google Cloud, aggiungi l'etichetta
resource_container
al campo per.
- Per correlare il volume complessivo di importazione agli spazi dei nomi:
- Nel campo Metrica, verifica che siano selezionate le risorse e le metriche seguenti: