GKE su Bare Metal include molteplici 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 sulla scelta della soluzione adeguata per il tuo ambiente.
Opzioni per GKE su Bare Metal
Esistono diverse opzioni di logging e monitoraggio per GKE su Bare Metal:
- Cloud Logging e Cloud Monitoring, abilitati per impostazione predefinita sui componenti di sistema Bare Metal.
- Prometheus e Grafana sono disponibili da Cloud Marketplace.
- Configurazioni convalidate con soluzioni di terze parti.
Cloud Logging e Cloud Monitoring
Google Cloud Observability è la soluzione di osservabilità integrata per Google Cloud. Offre una soluzione di logging completamente gestita, raccolta delle metriche, monitoraggio, creazione di dashboard e avvisi. Cloud Monitoring monitora GKE sui cluster Bare Metal in modo simile ai cluster GKE basati su cloud.
Gli agenti possono essere configurati per modificare l'ambito di logging e monitoraggio, nonché il livello delle metriche raccolte:
- L'ambito del logging e del monitoraggio può essere impostato solo sui componenti di sistema (impostazione predefinita) o per i componenti e le applicazioni di sistema.
- Il livello di metriche raccolte può essere configurato per un insieme ottimizzato di metriche (valore predefinito) o per metriche complete.
Per ulteriori informazioni, consulta Configurazione degli agenti Stackdriver per GKE su Bare Metal in questo documento.
Logging e Monitoring offrono un'unica soluzione di osservabilità basata su cloud potente e facile da configurare. Consigliamo vivamente Logging e Monitoring quando si eseguono carichi di lavoro solo su GKE su Bare Metal o carichi di lavoro su GKE e GKE su Bare Metal. Per le applicazioni con componenti in esecuzione su GKE su Bare Metal e infrastruttura on-premise standard, puoi prendere in considerazione altre soluzioni per una visione end-to-end di tali applicazioni.
Per maggiori dettagli su architettura, configurazione e dati replicati nel progetto Google Cloud per impostazione predefinita, consulta Come funzionano logging e monitoraggio per GKE su Bare Metal.
Per ulteriori informazioni su Logging, consulta la documentazione di Cloud Logging.
Per ulteriori informazioni su Monitoring, consulta la documentazione di Cloud Monitoring.
Per informazioni su come visualizzare e utilizzare le metriche di utilizzo delle risorse di Cloud Monitoring da GKE su Bare Metal a livello di parco risorse, consulta Utilizzare la panoramica della versione Google Kubernetes Engine (GKE) Enterprise.
Prometheus e Grafana
Prometheus e Grafana sono due popolari prodotti di monitoraggio open source disponibili in Cloud Marketplace:
Prometheus raccoglie metriche delle applicazioni e del sistema.
Alertmanager gestisce l'invio degli avvisi con diversi meccanismi di avviso.
Grafana è uno strumento per la creazione di dashboard.
Prometheus e Grafana possono essere abilitati su ogni cluster di amministrazione e cluster utente. Prometheus e Grafana sono consigliati per i team che si occupano di candidatura con esperienza pregressa con questi prodotti. Questi prodotti sono inoltre consigliati ai team operativi che preferiscono conservare le metriche delle applicazioni all'interno del cluster e per risolvere i problemi in caso di perdita della connettività di rete.
Soluzioni di terze parti
Google ha collaborato con diversi provider di soluzioni di logging e monitoraggio di terze parti per fare in modo che i loro prodotti funzionino bene con GKE su Bare Metal. 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 GKE su Bare Metal:
- Monitoraggio di GKE su Bare Metal con Elastic Stack
- Raccogli i log su GKE su Bare Metal con Splunk Connect
Come funzionano Logging e Monitoring per GKE su Bare Metal
Cloud Logging e Cloud Monitoring vengono installati e attivati in ogni cluster quando crei un nuovo cluster di amministrazione o utente.
Gli agenti Stackdriver includono diversi componenti su ciascun cluster:
Operatore Stackdriver (
stackdriver-operator-*
). Gestisce il ciclo di vita di tutti gli altri agenti Stackdriver di cui è stato eseguito il deployment nel cluster.Risorsa personalizzata Stackdriver. Risorsa creata automaticamente nell'ambito del processo di installazione di GKE su Bare Metal.
Agente metriche GKE (
gke-metrics-agent-*
). Un DaemonSet basato su OpenTelemetry Collector che esegue lo scraping dei dati delle metriche da ciascun nodo a Cloud Monitoring. Sono inclusi anche un DaemonSetnode-exporter
e un deploymentkube-state-metrics
per fornire più metriche sul cluster.Stackdriver Log Forwarder (
stackdriver-log-forwarder-*
). Un DaemonSet a bit Fluent che inoltra i log da ciascuna macchina a Cloud Logging. Il forwarding di log esegue il buffering locale delle voci di log sul nodo e le invia di nuovo per un massimo di 4 ore. Se il buffer è pieno o se il forwarding dei log non è in grado di raggiungere l'API Cloud Logging per più di 4 ore, i log vengono eliminati.Agente metadati Anthos (
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 di metriche tramite il nome del deployment, il nome del nodo o persino il 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, consulta Visualizzare le metriche di GKE su Bare Metal.
Configurazione degli agenti Stackdriver per GKE su Bare Metal
Gli agenti Stackdriver installati con GKE su Bare Metal raccolgono dati sui componenti di sistema per la manutenzione e la risoluzione dei problemi dei cluster. Le seguenti sezioni descrivono le modalità operative e di configurazione 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 i dettagli sulle prestazioni (ad esempio, utilizzo di CPU e memoria) e metadati simili, per i componenti di sistema forniti da Google. 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 di sistema e applicazioni
Per abilitare il logging e il monitoraggio delle applicazioni oltre 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 un set ottimizzato di metriche kube a Google Cloud Observability (in precedenza Stackdriver).
Occorrono meno risorse per raccogliere questo insieme ottimizzato di metriche, migliorando così il rendimento e la scalabilità complessivi.
Per disabilitare le metriche ottimizzate (non consigliato), sostituisci l'impostazione predefinita nella risorsa personalizzata Stackdriver.
Utilizza 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. I vantaggi di Managed Service per Prometheus includono quanto segue:
Puoi continuare a utilizzare il monitoraggio esistente basato su Prometheus senza modificare gli avvisi e le dashboard Grafana.
Se utilizzi sia GKE che GKE su Bare Metal, 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 Managed Service per Prometheus
Managed Service per Prometheus è abilitato per impostazione predefinita in GKE su Bare Metal.
Per disabilitare Managed Service per Prometheus:
Apri l'oggetto Stackdriver denominato
stackdriver
per la modifica:kubectl --kubeconfig CLUSTER_KUBECONFIG --namespace kube-system \ edit stackdriver stackdriver
Aggiungi la limitazione delle funzionalità
enableGMPForSystemMetrics
e impostala 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
è impostato su true
, le metriche per i componenti seguenti hanno un formato diverso per il modo in cui vengono archiviati ed eseguono le query in Cloud Monitoring:
- kube-apiserver
- kube-scheduler
- kube-controller-manager
- kubelet e cadvisor
- kube-state-metrics
- esportatore di nodi
Nel nuovo formato, puoi eseguire query sulle metriche precedenti utilizzando PromQL o MQL (Monitoring Query Language):
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 il prefisso kubernetes.io/anthos
e aggiungi il tipo di 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 Grafana con Managed Service per Prometheus
Per utilizzare Grafana con i dati delle metriche di Managed Service per Prometheus, segui i passaggi descritti in Eseguire query utilizzando Grafana per autenticare e configurare un'origine dati Grafana per eseguire query sui dati di Managed Service for Prometheus.
Un set di dashboard Grafana di esempio è fornito nel repository anthos-samples su GitHub. 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 in
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 nella tua Grafana che puntava al servizio Prometheus
frontend
.Accedi all'interfaccia utente di Grafana dal browser e seleziona + Importa dal menu Dashboard.
Carica il file JSON o copia e incolla il contenuto del file e seleziona Carica. Dopo aver caricato correttamente i contenuti, seleziona Importa. Facoltativamente, puoi anche modificare il nome e l'UID della dashboard prima dell'importazione.
La dashboard importata dovrebbe caricarsi correttamente se GKE su Bare Metal 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 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 GKE su Bare Metal
Configurazione delle risorse dei componenti Stackdriver
Quando crei un cluster, GKE su Bare Metal crea automaticamente una risorsa personalizzata 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 Stackdriver, oltre a poter eseguire separatamente l'override dell'impostazione predefinita delle metriche ottimizzate.
Override delle richieste e dei limiti di CPU e memoria predefiniti per un componente Stackdriver
I cluster con un'elevata densità di pod introducono un overhead di logging e monitoraggio maggiore. In casi estremi, i componenti di Stackdriver potrebbero restituire dati 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 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 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 Stackdriver, salva ed esci dall'editor della riga di comando.
Controlla l'integrità del pod:
kubectl -n kube-system get pods -l "managed-by=stackdriver"
Una 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 sarà 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 nell'elenco delle metriche GKE su Bare Metal.
Ecco alcuni esempi di sostituzioni che potresti utilizzare:
Metrica disattivata | 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 consigliata):
Apri la risorsa personalizzata 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
Metrics Server è 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 mediante resizer dei componenti aggiuntivi.
Nei casi estremi in cui un'elevata densità di pod crea un sovraccarico di logging e monitoraggio, Metrics Server potrebbe essere arrestato e riavviato a causa di limitazioni delle risorse. In questo caso, puoi allocare più risorse al server delle metriche modificando il file configmap metrics-server-config
nello spazio dei nomi gke-managed-metrics-server e cambiando il valore di cpuPerNode
e memoryPerNode
.
kubectl edit cm metrics-server-config -n gke-managed-metrics-server
I contenuti di esempio di ConfigMap sono:
apiVersion: v1
data:
NannyConfiguration: |-
apiVersion: nannyconfig/v1alpha1
kind: NannyConfiguration
cpuPerNode: 3m
memoryPerNode: 20Mi
kind: ConfigMap
Dopo aver aggiornato ConfigMap, ricrea i pod del server delle metriche con il seguente comando:
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 GKE su Bare Metal. Questi passaggi sono inclusi in Configurazione di un account di servizio da utilizzare con Logging e Monitoring nella pagina Abilitazione dei servizi Google e nel seguente elenco:
- È necessario creare un'area di lavoro di Cloud Monitoring all'interno del progetto Google Cloud. A questo scopo, fai clic su Monitoring nella console Google Cloud e segui il flusso di lavoro.
Devi abilitare le seguenti API Stackdriver:
Devi assegnare i ruoli IAM seguenti 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 le metriche e i log di sistema della versione Google Kubernetes Engine (GKE) Enterprise.
In un cluster GKE su Bare Metal, 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 la sezione Prezzi per l'osservabilità di Google Cloud.
Per informazioni sul credito per le metriche di Cloud Logging, contatta il team di vendita per i prezzi.