Google Distributed Cloud include diverse opzioni per il logging e il monitoraggio dei cluster, tra cui servizi gestiti basati su cloud, strumenti open source e compatibilità convalidata con soluzioni commerciali di terze parti. Questa pagina illustra queste opzioni e fornisce alcune indicazioni di base per scegliere la soluzione appropriata per il tuo ambiente.
Opzioni per Google Distributed Cloud
Sono disponibili diverse opzioni di logging e monitoraggio per Google Distributed Cloud:
- Cloud Logging e Cloud Monitoring, abilitati per impostazione predefinita sui componenti di sistema Bare Metal.
- Prometheus e Grafana sono disponibili su Cloud Marketplace.
- Configurazioni convalidate con soluzioni di terze parti.
Cloud Logging e Cloud Monitoring
Google Cloud Observability è la soluzione di osservabilità integrata di Google Cloud. Offre una soluzione di logging completamente gestita, raccolta delle metriche, monitoraggio, creazione di dashboard e avvisi. Cloud Monitoring monitora i cluster Google Distributed Cloud in modo simile ai cluster GKE basati su cloud.
Gli agenti possono essere configurati per modificare l'ambito del logging e del monitoraggio, nonché il livello di metriche raccolte:
- L'ambito del logging e del monitoraggio può essere impostato solo su componenti di sistema (impostazione predefinita) o per componenti e applicazioni di sistema.
- Il livello di metriche raccolte può essere configurato per un insieme ottimizzato di metriche (impostazione predefinita) o per metriche complete.
Per ulteriori informazioni, consulta Configurazione degli agenti Stackdriver per Google Distributed Cloud in questo documento.
Logging e Monitoring forniscono un'unica soluzione di osservabilità basata su cloud potente e facile da configurare. Consigliamo vivamente Logging e Monitoring per l'esecuzione di carichi di lavoro su Google Distributed Cloud. Per le applicazioni con componenti in esecuzione su Google Distributed Cloud e l'infrastruttura on-premise standard, puoi prendere in considerazione altre soluzioni per una visione end-to-end di queste applicazioni.
Per maggiori dettagli sull'architettura, sulla configurazione e sui dati replicati nel progetto Google Cloud per impostazione predefinita, consulta Come funzionano Logging e Monitoring per Google Distributed Cloud.
Per ulteriori informazioni su Logging, consulta la documentazione di Cloud Logging.
Per ulteriori informazioni su Monitoring, consulta la documentazione di Cloud Monitoring.
Per scoprire come visualizzare e utilizzare le metriche di utilizzo delle risorse di Cloud Monitoring di Google Distributed Cloud a livello di parco risorse, vedi Utilizzare la panoramica della versione Google Kubernetes Engine (GKE) Enterprise.
Prometheus e Grafana
Prometheus e Grafana sono due prodotti di monitoraggio open source molto popolari disponibili in Cloud Marketplace:
Prometheus raccoglie metriche di applicazione e sistema.
Alertmanager gestisce l'invio di avvisi con diversi meccanismi di avviso.
Grafana è uno strumento di dashboard.
Per tutte le tue esigenze di monitoraggio, ti consigliamo di utilizzare Google Cloud Managed Service per Prometheus, basato su Cloud Monitoring. Con Google Cloud Managed Service per Prometheus puoi monitorare i componenti di sistema senza costi aggiuntivi. Google Cloud Managed Service per Prometheus è compatibile anche con Grafana. Tuttavia, se preferisci un sistema di monitoraggio locale puro, puoi scegliere di installare Prometheus e Grafana nei tuoi cluster.
Se hai installato Prometheus in locale e vuoi raccogliere metriche dai componenti di sistema, devi autorizzare l'istanza Prometheus locale ad accedere agli endpoint delle metriche dei componenti di sistema:
Associa l'account di servizio per la tua istanza Prometheus al ClusterRole
gke-metrics-agent
predefinito e utilizza il token dell'account di servizio come credenziali per eseguire lo scraping delle metriche dai seguenti componenti di sistema:kube-apiserver
kube-scheduler
kube-controller-manager
kubelet
node-exporter
Utilizza la chiave e il certificato client archiviati nel secret di
kube-system/stackdriver-prometheus-etcd-scrape
per autenticare lo scrape della metrica da etcd.Crea un NetworkPolicy per consentire l'accesso dal tuo spazio dei nomi a kube-state-metrics.
Soluzioni di terze parti
Google ha collaborato con diversi fornitori di soluzioni di logging e monitoraggio di terze parti per aiutare i loro prodotti a funzionare correttamente con Google Distributed Cloud. tra cui Datadog, Elastic e Splunk. In futuro verranno aggiunte altre terze parti convalidate.
Le seguenti guide alle soluzioni sono disponibili per l'utilizzo di soluzioni di terze parti con Google Distributed Cloud:
- Monitoraggio di Google Distributed Cloud con Elastic Stack
- Raccogliere log su Google Distributed Cloud con Splunk Connect
Come funzionano Logging e Monitoring per Google Distributed Cloud
Cloud Logging e Cloud Monitoring vengono installati e attivati in ciascun cluster quando crei un nuovo cluster di amministrazione o utente.
Gli agenti Stackdriver includono diversi componenti in ogni cluster:
Stackdriver Operator (
stackdriver-operator-*
). Gestisce il ciclo di vita di tutti gli altri agenti Stackdriver di cui è stato eseguito il deployment nel cluster.Risorsa Stackdriver Custom. Una risorsa creata automaticamente durante il processo di installazione di Google Distributed Cloud.
Agente delle metriche GKE (
gke-metrics-agent-*
). Un DaemonSet basato su OpenTelemetry Collector che esegue lo scraping delle metriche da ciascun nodo in Cloud Monitoring. Sono inclusi anche un deploymentnode-exporter
DaemonSet e unkube-state-metrics
per fornire più metriche sul cluster.Stackdriver Log Forwarder (
stackdriver-log-forwarder-*
). Un DaemonSet di bit Fluent che inoltra i log da ogni macchina a Cloud Logging. Il server di forwarding dei log memorizza le voci di log sul nodo in locale e le invia di nuovo per un massimo di quattro ore. Se il buffer si riempie o se il server di forwarding dei log non riesce a raggiungere l'API Cloud Logging per più di 4 ore, i log vengono eliminati.Agente metadati (
stackdriver-metadata-agent-
). Un deployment che invia metadati per risorse Kubernetes, come pod, deployment o nodi, all'API Config Monitoring for Ops; questi dati vengono utilizzati per arricchire le query delle metriche consentendo di eseguire query per nome del deployment, nome del nodo o persino nome del servizio Kubernetes.
Puoi visualizzare gli agenti installati da Stackdriver eseguendo questo comando:
kubectl -n kube-system get pods -l "managed-by=stackdriver"
L'output di questo comando è simile al seguente:
kube-system gke-metrics-agent-4th8r 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-8lt4s 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-dhxld 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-lbkl2 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-pblfk 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-qfwft 1/1 Running 1 (40h ago) 40h
kube-system kube-state-metrics-9948b86dd-6chhh 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-5s4pg 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-d9gwv 1/1 Running 2 (40h ago) 40h
kube-system node-exporter-fhbql 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-gzf8t 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-tsrpp 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-xzww7 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-log-forwarder-8lwxh 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-log-forwarder-f7cgf 1/1 Running 2 (40h ago) 40h
kube-system stackdriver-log-forwarder-fl5gf 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-log-forwarder-q5lq8 1/1 Running 2 (40h ago) 40h
kube-system stackdriver-log-forwarder-www4b 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-log-forwarder-xqgjc 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-metadata-agent-cluster-level-5bb5b6d6bc-z9rx7 1/1 Running 1 (40h ago) 40h
Metriche di Cloud Monitoring
Per un elenco delle metriche raccolte da Cloud Monitoring, vedi Visualizzare le metriche di Google Distributed Cloud.
Configurazione di agenti Stackdriver per Google Distributed Cloud
Gli agenti Stackdriver installati con Google Distributed Cloud raccolgono dati sui componenti di sistema per la manutenzione e la risoluzione dei problemi dei cluster. Le seguenti sezioni descrivono la configurazione e le modalità operative di Stackdriver.
Solo componenti di sistema (modalità predefinita)
Al momento dell'installazione, gli agenti Stackdriver sono configurati per impostazione predefinita per raccogliere log e metriche, inclusi dettagli sulle prestazioni (ad esempio, utilizzo di CPU e memoria) e metadati simili per i componenti di sistema forniti da Google. Questi includono tutti i carichi di lavoro nel cluster di amministrazione e, per i cluster utente, i carichi di lavoro negli spazi dei nomi kube-system, gke-system, gke-connect, istio-system e config-management system.
Componenti e applicazioni del sistema
Per attivare il logging e il monitoraggio delle applicazioni in aggiunta alla modalità predefinita, segui i passaggi descritti in Abilitare il logging e il monitoraggio delle applicazioni.
Metriche ottimizzate (metriche predefinite)
Per impostazione predefinita, i deployment kube-state-metrics
in esecuzione nel cluster raccolgono e segnalano a Google Cloud Observability (in precedenza Stackdriver) un set ottimizzato di metriche kube.
Sono necessarie meno risorse per raccogliere questo insieme ottimizzato di metriche, che migliora le prestazioni e la scalabilità complessive.
Per disabilitare le metriche ottimizzate (opzione non consigliata), esegui l'override dell'impostazione predefinita nella risorsa personalizzata di Stackdriver.
Utilizza Google Cloud Managed Service per Prometheus per i componenti di sistema selezionati
Google Cloud Managed Service per Prometheus fa parte di Cloud Monitoring ed è disponibile come opzione per i componenti di sistema. Tra i vantaggi di Google Cloud Managed Service per Prometheus figurano:
Puoi continuare a utilizzare il monitoraggio basato su Prometheus esistente senza modificare gli avvisi e le dashboard di Grafana.
Se utilizzi sia GKE sia Google Distributed Cloud, puoi utilizzare lo stesso Prometheus Query Language (PromQL) per le metriche su tutti i tuoi cluster. Puoi anche utilizzare la scheda PromQL in Metrics Explorer nella console Google Cloud.
Abilita e disabilita Google Cloud Managed Service per Prometheus
Google Cloud Managed Service per Prometheus è abilitato per impostazione predefinita in Google Distributed Cloud.
Per disabilitare Google Cloud Managed Service per Prometheus:
Apri l'oggetto Stackdriver denominato
stackdriver
per la modifica:kubectl --kubeconfig CLUSTER_KUBECONFIG --namespace kube-system \ edit stackdriver stackdriver
Aggiungi il blocco di caratteristiche
enableGMPForSystemMetrics
e impostalo sufalse
:apiVersion: addons.gke.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: featureGates: enableGMPForSystemMetrics: false
Chiudi la sessione di modifica.
Visualizza i dati delle metriche
Se il criterio enableGMPForSystemMetrics
viene impostato su true
, le metriche dei componenti seguenti
hanno un formato diverso per come vengono archiviati ed eseguiti query in
Cloud Monitoring:
- kube-apiserver
- kube-scheduler
- kube-controller-manager
- kubelet e cadvisor
- kube-state-metrics
- utilità di esportazione dei nodi
Nel nuovo formato puoi eseguire query sulle metriche precedenti utilizzando PromQL o Monitoring Query Language (MQL):
PromQL
Esempio di query PromQL:
histogram_quantile(0.95, sum(rate(apiserver_request_duration_seconds_bucket[5m])) by (le))
MQL
Per utilizzare MQL, imposta la risorsa monitorata su prometheus_target
, utilizza il nome della metrica con prefisso kubernetes.io/anthos
e aggiungi il tipo Prometheus come suffisso al nome della metrica.
fetch prometheus_target
| metric 'kubernetes.io/anthos/apiserver_request_duration_seconds/histogram'
| align delta(5m)
| every 5m
| group_by [], [value_histogram_percentile: percentile(value.histogram, 95)]
Configurazione delle dashboard di Grafana con Google Cloud Managed Service per Prometheus
Per utilizzare Grafana con i dati delle metriche di Google Cloud Managed Service per Prometheus, devi prima configurare e autenticare l'origine dati Grafana. Per configurare e
autenticare l'origine dati, puoi utilizzare lo strumento di sincronizzazione
dell'origine dati (datasource-syncer
) per generare le credenziali OAuth2 e sincronizzarle con Grafana
tramite l'API dell'origine dati Grafana. Lo strumento di sincronizzazione dell'origine dati imposta
l'API Cloud Monitoring come URL del server Prometheus (il valore dell'URL inizia con
https://monitoring.googleapis.com
) nell'origine dati in Grafana.
Segui i passaggi descritti in Eseguire query con Grafana per autenticare e configurare un'origine dati Grafana per eseguire query sui dati da Google Cloud Managed Service per Prometheus.
Nel repository anthos-samples su GitHub viene fornito un insieme di dashboard Grafana di esempio. Per installare le dashboard di esempio, segui questi passaggi:
Scarica i file JSON di esempio:
git clone https://github.com/GoogleCloudPlatform/anthos-samples.git cd anthos-samples/gmp-grafana-dashboards
Se l'origine dati Grafana è stata creata con un nome diverso con
Managed Service for Prometheus
, modifica il campodatasource
in tutti i file JSON:sed -i "s/Managed Service for Prometheus/[DATASOURCE_NAME]/g" ./*.json
Sostituisci [DATASOURCE_NAME] con il nome dell'origine dati in Grafana che puntava al servizio
frontend
Prometheus.Accedi all'interfaccia utente di Grafana dal tuo browser e seleziona + Importa nel menu Dashboard.
Carica il file JSON oppure copia e incolla i contenuti del file e seleziona Carica. Una volta caricati correttamente i contenuti del file, seleziona Importa. Facoltativamente, puoi anche modificare il nome e l'UID della dashboard prima dell'importazione.
La dashboard importata dovrebbe caricarsi correttamente se Google Distributed Cloud e l'origine dati sono configurati correttamente. Ad esempio, il seguente screenshot mostra la dashboard configurata da
cluster-capacity.json
.
Risorse aggiuntive
Per ulteriori informazioni su Google Cloud Managed Service per Prometheus, consulta quanto segue:
Le metriche del piano di controllo GKE sono compatibili con PromQL
Utilizzo di Managed Service per Prometheus per le applicazioni utente su Google Distributed Cloud
Configurazione delle risorse del componente Stackdriver
Quando crei un cluster, Google Distributed Cloud crea automaticamente una risorsa personalizzata di Stackdriver. Puoi modificare la specifica nella risorsa personalizzata per eseguire l'override dei valori predefiniti per le richieste e i limiti di CPU e memoria per un componente di Stackdriver. Puoi anche eseguire l'override separato dell'impostazione delle metriche ottimizzate predefinite.
Override delle richieste e dei limiti predefiniti di CPU e memoria per un componente di Stackdriver
I cluster con un'alta densità di pod introducono un overhead di logging e monitoraggio più elevato. In casi estremi, i componenti Stackdriver potrebbero essere vicini al limite di utilizzo di CPU e memoria o persino essere soggetti a riavvii costanti a causa dei limiti delle risorse. In questo caso, per eseguire l'override dei valori predefiniti per le richieste e i limiti di CPU e memoria per un componente di Stackdriver, segui questi passaggi:
Esegui questo comando per aprire la risorsa personalizzata di Stackdriver in un editor della riga di comando:
kubectl -n kube-system edit stackdriver stackdriver
Nella risorsa personalizzata di Stackdriver, aggiungi la sezione
resourceAttrOverride
sotto il campospec
:resourceAttrOverride: DAEMONSET_OR_DEPLOYMENT_NAME/CONTAINER_NAME: LIMITS_OR_REQUESTS: RESOURCE: RESOURCE_QUANTITY
Tieni presente che la sezione
resourceAttrOverride
sostituisce tutti i limiti e le richieste predefiniti esistenti per il componente specificato.resourceAttrOverride
supporta i seguenti componenti:gke-metrics-agent/gke-metrics-agent
stackdriver-log-forwarder/stackdriver-log-forwarder
stackdriver-metadata-agent-cluster-level/metadata-agent
node-exporter/node-exporter
kube-state-metrics/kube-state-metrics
Un file di esempio ha il seguente aspetto:
apiVersion: addons.gke.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: anthosDistribution: baremetal projectID: my-project clusterName: my-cluster clusterLocation: us-west-1a resourceAttrOverride: gke-metrics-agent/gke-metrics-agent: requests: cpu: 110m memory: 240Mi limits: cpu: 200m memory: 4.5Gi
Per salvare le modifiche alla risorsa personalizzata di Stackdriver, salva ed esci dall'editor a riga di comando.
Controlla l'integrità del tuo pod:
kubectl -n kube-system get pods -l "managed-by=stackdriver"
La risposta per un pod integro è simile alla seguente:
gke-metrics-agent-4th8r 1/1 Running 1 40h
Controlla le specifiche del pod del componente per assicurarti che le risorse siano impostate correttamente.
kubectl -n kube-system describe pod POD_NAME
Sostituisci
POD_NAME
con il nome del pod che hai appena modificato. Ad esempio,gke-metrics-agent-4th8r
.La risposta è simile alla seguente:
Name: gke-metrics-agent-4th8r Namespace: kube-system ... Containers: gke-metrics-agent: Limits: cpu: 200m memory: 4.5Gi Requests: cpu: 110m memory: 240Mi ...
Disattiva le metriche ottimizzate
Per impostazione predefinita, i deployment kube-state-metrics
in esecuzione nel cluster raccolgono e segnalano a Stackdriver un set ottimizzato di metriche kube. Se hai bisogno di metriche aggiuntive,
ti consigliamo di trovarne una sostitutiva dall'elenco delle metriche
Google Distributed Cloud.
Ecco alcuni esempi di sostituzioni che potresti usare:
Metrica disabilitata | Sostituzioni |
---|---|
kube_pod_start_time |
container/uptime |
kube_pod_container_resource_requests |
container/cpu/request_cores container/memory/request_bytes |
kube_pod_container_resource_limits |
container/cpu/limit_cores container/memory/limit_bytes |
Per disattivare l'impostazione predefinita delle metriche ottimizzate (non consigliato):
Apri la risorsa personalizzata di Stackdriver in un editor della riga di comando:
kubectl -n kube-system edit stackdriver stackdriver
Imposta il campo
optimizedMetrics
sufalse
:apiVersion: addons.gke.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: anthosDistribution: baremetal projectID: my-project clusterName: my-cluster clusterLocation: us-west-1a optimizedMetrics: false
Salva le modifiche ed esci dall'editor della riga di comando.
Server delle metriche
Server delle metriche è l'origine delle metriche delle risorse del container per varie pipeline di scalabilità automatica. Metrics Server recupera le metriche dai kubelet e le espone tramite l'API Kubernetes Metrics. HPA e VPA usano queste metriche per determinare quando attivare la scalabilità automatica. Il server delle metriche viene scalato utilizzando il componente aggiuntivo.
Nei casi estremi in cui un'elevata densità di pod crea un overhead eccessivo per il logging e il monitoraggio, il server delle metriche potrebbe essere arrestato e riavviato a causa di limitazioni delle risorse. In questo caso, puoi allocare più risorse al server delle metriche modificando la configmap metrics-server-config
nello spazio dei nomi gke-managed-metrics-server e modificando il valore per cpuPerNode
e memoryPerNode
.
kubectl edit cm metrics-server-config -n gke-managed-metrics-server
I contenuti di esempio del ConfigMap sono:
apiVersion: v1
data:
NannyConfiguration: |-
apiVersion: nannyconfig/v1alpha1
kind: NannyConfiguration
cpuPerNode: 3m
memoryPerNode: 20Mi
kind: ConfigMap
Dopo aver aggiornato l'oggetto ConfigMap, ricrea i pod Metrics-server con il comando seguente:
kubectl delete pod -l k8s-app=metrics-server -n gke-managed-metrics-server
Requisiti di configurazione per Logging e Monitoring
Esistono diversi requisiti di configurazione per abilitare Cloud Logging e Cloud Monitoring con Google Distributed Cloud. Questi passaggi sono inclusi in Configurare un account di servizio per l'utilizzo con Logging e Monitoring nella pagina Abilitazione dei servizi Google e nel seguente elenco:
- All'interno del progetto Google Cloud deve essere creata un'area di lavoro di Cloud Monitoring. Per farlo, fai clic su Monitoring nella console Google Cloud e segui il flusso di lavoro.
Devi abilitare le seguenti API di Stackdriver:
Devi assegnare i seguenti ruoli IAM all'account di servizio utilizzato dagli agenti Stackdriver:
logging.logWriter
monitoring.metricWriter
stackdriver.resourceMetadata.writer
monitoring.dashboardEditor
opsconfigmonitoring.resourceMetadata.writer
Prezzi
Non è previsto alcun costo per i log di sistema e le metriche della versione Google Kubernetes Engine (GKE) Enterprise.
In un cluster Google Distributed Cloud, i log di sistema e le metriche di Google Kubernetes Engine (GKE) Enterprise includono quanto segue:
- Log e metriche di tutti i componenti in un cluster di amministrazione
- Log e metriche dei componenti in questi spazi dei nomi in un cluster utente:
kube-system
,gke-system
,gke-connect
,knative-serving
,istio-system
,monitoring-system
,config-management-system
,gatekeeper-system
,cnrm-system
Per ulteriori informazioni, consulta Prezzi per Google Cloud Observability.
Per saperne di più sul credito per le metriche di Cloud Logging, contatta il team di vendita per i prezzi.