Google Cloud Managed Service per Prometheus addebita il numero di campioni importati in Cloud Monitoring e per le richieste di lettura all'API Monitoring. Il numero di campioni importati è il fattore principale che determina il costo.
Questo documento descrive come puoi 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 il 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 hai più di un account di fatturazione, seleziona Vai alla fatturazione collegata 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 cui 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 sulla fatturazione per Managed Service per Prometheus da un progetto:
Riduci i costi
Per ridurre i costi associati all'utilizzo di Managed Service per Prometheus, puoi procedere nel seguente modo:
- Riduci il numero di serie temporali inviate al servizio gestito filtrando i dati delle metriche generate.
- Riduci il numero di campioni raccolti modificando lo scraping intervallo di tempo.
- Limita il numero di campioni provenienti da metriche ad alta cardinalità potenzialmente configurate in modo errato.
Riduci il numero di serie temporali
La documentazione di Prometheus open source consiglia raramente di filtrare il volume delle metriche, il che è ragionevole quando i costi sono limitati dai costi delle macchine. Ma quando si paga un fornitore di servizi gestiti per unità, l'invio possono generare fatture inutilmente alte.
Gli esportatori inclusi nel progetto kube-prometheus
, in particolare il servizio kube-state-metrics
, possono emettere molti dati metrici.
Ad esempio, il servizio kube-state-metrics
genera centinaia di metriche, molte delle quali potrebbero non avere alcun valore per te in qualità di consumatore. Un
cluster di tre nodi nuovo di zecca che utilizza il progetto kube-prometheus
invia
circa 900 campioni al secondo a Managed Service per Prometheus.
Il filtro di queste metriche estranee potrebbe essere sufficiente per ridurre 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 hai eseguito il deployment autonomo.
Se utilizzi il servizio kube-state-metrics
, puoi aggiungere una
regola di rinominazione di Prometheus con un'azione keep
. Per la raccolta gestita, questa regola viene inserita in PodMonitoring o
Definizione di ClusterPodMonitoring. Per
raccolta con deployment autonomo, questa regola va nello scrape di Prometheus
config o
Definizione di ServiceMonitor (ad
operatore Prometheus).
Ad esempio, l'utilizzo del seguente filtro su un nuovo cluster di tre nodi riduce il volume dei campioni 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 conservate le metriche il cui nome inizia conkube_daemonset_
.
Puoi anche specificare un'azione di drop
, che filtra le metriche
che corrispondono all'espressione regolare.
A volte, potresti scoprire che un intero esportatore non è importante. Ad esempio:
il pacchetto kube-prometheus
installa il seguente servizio esegue il monitoraggio
un valore predefinito, 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, disattivare o interrompere lo scraping dei monitor dei servizi che non ti servono. Ad esempio, la disattivazione del monitoraggio del servizio kube-apiserver
su un nuovo cluster a tre nodi riduce il volume dei campioni di circa 200 campioni al secondo.
Riduci il numero di campioni raccolti
Managed Service per Prometheus prevede addebiti per 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 campionamento di 30 secondi può ridurre il volume del campione del 66%, senza una significativa perdita di informazioni.
- La modifica di un periodo di campionamento di 10 secondi in un periodo di campionamento di 60 secondi può ridurre il volume del campione dell'83%.
Per informazioni su come vengono conteggiati i campioni e come viene influisce sul numero di campioni. Consulta Esempi di prezzi basati su esempi importati.
In genere, puoi impostare l'intervallo di scansione in base al job o al target.
Per la raccolta gestita, imposti l'intervallo di scraping nella
PodMonitoring
risorsa utilizzando il campo interval
.
Per la raccolta di cui è stato eseguito il deployment autonomo, imposti l'intervallo di campionamento nello scrape
, di solito
impostando un campo interval
o scrape_interval
.
Configurare l'aggregazione locale (solo raccolta con deployment autonomo)
Se configuri il servizio utilizzando la raccolta di tipo self-deployed,
ad esempio con kube-prometheus, prometheus-operator o con 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 i dati aggregati a
Monarch.
Ad esempio, supponiamo 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
, mantenendo al contempo tutti i dati non elaborati memorizzati localmente (ad esempio
per la generazione di avvisi). La configurazione potrebbe avere il seguente aspetto:
- Esegui il deployment dell'immagine di Managed Service per Prometheus.
- Configura le tue configurazioni di scraping per eseguire lo scraping di tutti i dati non elaborati il server locale (utilizzando il numero di filtri desiderato).
Configura le regole di registrazione in modo da eseguire aggregazioni locali su
high_cardinality_metric_1
ehigh_cardinality_metric_2
, ad esempio aggregando l'etichettainstance
o qualsiasi numero di etichette delle metriche, a seconda di ciò che offre la migliore riduzione del numero di serie temporali non necessarie. Puoi eseguire una regola simile alla seguente, che eliminainstance
e somma le serie temporali risultanti con 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 quanto segue flag di filtro, che impedisce ai dati non elaborati di l'invio a Monarch delle metriche elencate:
--export.match='{__name__!="high_cardinality_metric_1",__name__!="high_cardinality_metric_2"}'
Questo esempio di flag
export.match
utilizza selettori separati da virgole con l'operatore!=
per filtrare i dati non elaborati indesiderati. Se aggiungi altre regole di registrazione per aggregare altre metriche ad alta cardinalità, devi anche aggiungere un nuovo selettore__name__
al filtro in modo che i dati non elaborati vengano eliminati. Di utilizzando un singolo flag contenente più selettori con l'operatore!=
per escludere 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 di omettere le virgolette singole che circondano le parentesi.
Questo flusso di lavoro potrebbe comportare un sovraccarico operativo nella creazione e nella gestione delle regole di registrazione e degli indicatori export.match
, ma è probabile che tu possa ridurre notevolmente il volume concentrandoti solo sulle metriche con cardinalità eccezionalmente elevata. Per
informazioni sull'identificazione delle metriche che potrebbero trarre vantaggio
pre-aggregazione, 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 di federazione, poiché un singolo server Prometheus di cui è stato eseguito il deployment autonomo può eseguire qualsiasi aggregazione a livello di cluster di cui potresti avere bisogno. La federazione potrebbe causare effetti imprevisti, ad esempio metriche di tipo "sconosciuto" e il volume delle importazioni è raddoppiato.
Limita i campioni da metriche ad alta cardinalità (solo raccolta con deployment autonomo)
Puoi creare metriche a cardinalità estremamente elevata aggiungendo etichette che
un numero elevato di valori potenziali, come l'ID utente o l'indirizzo IP. Queste metriche possono generare un numero molto elevato di campioni. Utilizzo delle etichette
un numero elevato di valori è generalmente
un errore di configurazione. Puoi
evita 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 in modo da individuare solo metriche palesemente erroneamente configurate. Qualsiasi campione oltre tale limite vengono eliminati e può essere molto difficile diagnosticare i problemi a causa del superamento del limite.
L'utilizzo di un limite di campioni non è un buon modo per gestire l'importazione dei campioni, ma il limite può proteggerti da una configurazione errata accidentale. Per ulteriori informazioni, consulta la pagina Utilizzare sample_limit
per evitare il sovraccarico.
Identificare e attribuire i costi
Puoi usare Cloud Monitoring per identificare le metriche Prometheus che sono scrivendo il maggior numero di campioni. Queste metriche contribuiscono maggiormente ai tuoi costi. Dopo aver identificato le metriche più costose, puoi modificare le tue configurazioni di scrape per filtrare queste metriche in modo appropriato.
La pagina Gestione delle metriche di Cloud Monitoring fornisce informazioni che può aiutarti a controllare l'importo speso per le metriche fatturabili senza influire sull'osservabilità. La pagina Gestione delle metriche riporta le seguenti informazioni:
- Volumi di importazione sia per la fatturazione basata su byte che su sample, per i domini delle metriche e per le singole metriche.
- Dati su etichette e cardinalità delle metriche.
- Numero di letture per ogni metrica.
- Utilizzo di metriche nei criteri di avviso e nelle dashboard personalizzate.
- Percentuale di errori di scrittura delle metriche.
Puoi anche utilizzare la gestione delle metriche per: escludere le metriche non necessarie, eliminando il costo dell'importazione.
Per visualizzare la pagina Gestione delle metriche:
-
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 l'intervallo di tempo. Per impostazione predefinita, La pagina Gestione delle metriche mostra informazioni sulle metriche raccolte. nel giorno precedente.
Per saperne di più sulla pagina Gestione delle metriche, consulta Visualizzare e gestire l'utilizzo delle metriche.
Le seguenti sezioni descrivono i metodi per analizzare il numero di campioni che puoi stanno inviando a Managed Service per Prometheus e attribuiscono volumi elevati a metriche specifiche, spazi dei nomi Kubernetes e regioni Google Cloud.
Identificare le metriche ad alto volume
Per identificare le metriche Prometheus con i volumi di importazione più elevati, procedi come segue:
-
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 scheda prospetto Campioni fatturabili importati, fai clic su Visualizza grafici.
- Individua il grafico Importazione del volume del namespace e fai clic su more_vert Altre opzioni per il grafico.
- Seleziona l'opzione del grafico Visualizza in Esplora metriche.
- Nel riquadro Generatore di Esplora metriche, modifica i campi come segue:
- Nel campo Metrica, verifica che siano selezionate la risorsa e la metrica seguenti:
Metric Ingestion Attribution
eSamples written by attribution id
. - Per il 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 aggregato i dati tramite Etichettaattribution_dimension
.
Il grafico risultante mostra i volumi di importazione per ogni tipo di metrica.
- Nel campo Metrica, verifica che siano selezionate la risorsa e la metrica seguenti:
- Per visualizzare il volume di importazione per ciascuna metrica, nell'opzione di attivazione/disattivazione Tabella del grafico Entrambe, seleziona Entrambe. La tabella mostra il volume importato per ogni metrica nel Colonna Valore.
- Fai clic due volte sull'intestazione della colonna Valore per ordinare le metriche in base a un volume di importazione decrescente.
Il grafico risultante, che mostra le metriche principali per volume classificate in base alla media, ha il seguente aspetto:
Identificare gli spazi dei nomi ad alto volume
Per attribuire il volume di importazione a specifici spazi dei nomi Kubernetes, 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 scheda prospetto Campioni fatturabili importati, fai clic su Visualizza grafici.
- Individua il grafico Importazione del volume del namespace e fai clic su more_vert Altre opzioni per il grafico.
- Seleziona l'opzione del grafico Visualizza in Esplora metriche.
- Nel riquadro Generatore di Esplora metriche, modifica i campi come segue:
- Nel campo Metrica, verifica che siano selezionate la risorsa e la metrica seguenti:
Metric Ingestion Attribution
eSamples written by attribution id
. - Configura gli altri parametri di ricerca in base alle esigenze:
- Per correlare il volume di importazione complessivo agli spazi dei nomi:
- Per l'opzione Aggregazione
seleziona
sum
. - Per il campo per, seleziona il
le seguenti etichette:
attribution_dimension
attribution_id
- Per il campo Filtro, utilizza
attribution_dimension = namespace
.
- Per l'opzione Aggregazione
seleziona
- Per correlare il volume di importazione delle singole metriche con
gli spazi dei nomi:
- Per il 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
.
- Per il campo Aggregazione, seleziona
- Per identificare gli spazi dei nomi responsabili di una metrica con volume elevato specifica:
- Identifica il tipo di metrica per la metrica ad alto volume di
utilizzando uno degli altri esempi per identificare volumi elevati
tipi di metriche. Il tipo di metrica è la stringa nella visualizzazione tabella che inizia con
prometheus.googleapis.com/
. Per ulteriori informazioni, consulta identificare le metriche ad alto volume. - 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
. - Per il 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 ad alto volume di
utilizzando uno degli altri esempi per identificare volumi elevati
tipi di metriche. Il tipo di metrica è la stringa nella visualizzazione tabella che inizia con
- Per visualizzare l'importazione per regione Google Cloud, aggiungi
location
al campo per. - Per visualizzare l'importazione per progetto Google Cloud, aggiungi l'etichetta
resource_container
al campo per.
- Per correlare il volume di importazione complessivo agli spazi dei nomi:
- Nel campo Metrica, verifica che siano selezionate la risorsa e la metrica seguenti: