Questo tutorial descrive come personalizzare il logging Fluentd per un cluster Google Kubernetes Engine. Imparerai a ospitare il tuo daemonset Fluentd configurabile per inviare log a Cloud Logging, invece di selezionare l'opzione di Cloud Logging durante la creazione del cluster Google Kubernetes Engine (GKE), che non consente la configurazione del daemon Fluentd.
Obiettivi
- Esegui il deployment del tuo daemonset Fluentd su un cluster Google Kubernetes Engine, configurato per registrare i dati in Cloud Logging. Supponiamo che tu abbia già familiarità con Kubernetes.
- Personalizza il logging di GKE per rimuovere dati sensibili dai log di Cloud Logging.
- Personalizza il logging di GKE per aggiungere eventi a livello di nodo ai log di Cloud Logging.
Costi
Questo tutorial utilizza i componenti fatturabili di Google Cloud, tra cui:
- Un cluster Google Kubernetes Engine a tre nodi.
Il Calcolatore prezzi stima il costo di questo ambiente a circa 1,14 $per 8 ore.
Prima di iniziare
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Google Kubernetes Engine, Compute Engine.
-
Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Google Kubernetes Engine, Compute Engine.
Inizializzazione delle variabili comuni
Devi definire diverse variabili che controllano dove viene eseguito il deployment degli elementi dell'infrastruttura.
Utilizza un editor di testo per modificare lo script seguente, sostituendo il tuo ID progetto con
[YOUR_PROJECT_ID]
. Lo script imposta la regione suus-east-1
. Se apporti modifiche allo script, assicurati che i valori della zona facciano riferimento all'area geografica specificata.export region=us-east1 export zone=${region}-b export project_id=[YOUR_PROJECT_ID]
Vai a Cloud Shell.
Copia lo script nella finestra di Cloud Shell ed eseguilo.
Esegui questi comandi per impostare la zona e l'ID progetto predefiniti in modo da non dover specificare questi valori in ogni comando successivo:
gcloud config set compute/zone ${zone} gcloud config set project ${project_id}
Creazione del cluster GKE
In Cloud Shell, clona il repository di esempio:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-customize-fluentd
Il repository di esempio include i manifest Kubernetes per il daemonset Fluentd e un programma di logging di test di cui eseguirai il deployment in questo tutorial.
Cambia la directory di lavoro nel repository clonato:
cd kubernetes-engine-customize-fluentd
Crea il cluster GKE solo con logging e monitoraggio del sistema:
gcloud container clusters create gke-with-custom-fluentd \ --zone us-east1-b \ --logging=SYSTEM \ --tags=gke-cluster-with-customized-fluentd \ --scopes=logging-write,storage-rw
Deployment dell'applicazione di logger di test
Per impostazione predefinita, l'applicazione di esempio di cui esegui il deployment
emette continuamente istruzioni di logging casuali. Il container Docker viene creato a partire dal codice sorgente nella sottodirectory test-logger
.
In Cloud Shell, crea l'immagine container
test-logger
:docker build -t test-logger test-logger
Tagga il container prima di eseguirne il push al registro:
docker tag test-logger gcr.io/${project_id}/test-logger
Esegui il push dell'immagine container:
docker push gcr.io/${project_id}/test-logger
Aggiorna il file di deployment:
envsubst < kubernetes/test-logger.yaml > kubernetes/test-logger-deploy.yaml
Esegui il deployment dell'applicazione
test-logger
nel cluster GKE:kubectl apply -f kubernetes/test-logger-deploy.yaml
Visualizza lo stato di
test-logger
pod:kubectl get pods
Ripeti questo comando finché l'output non è simile al seguente, con tutti e tre i pod
test-logger
in esecuzione:
Deployment del daemonset Fluentd nel cluster
Successivamente, configurerai ed eseguirai il deployment del daemonset Fluentd.
In Cloud Shell, esegui il deployment della configurazione Fluentd:
kubectl apply -f kubernetes/fluentd-configmap.yaml
Esegui il deployment del daemonset Fluentd:
kubectl apply -f kubernetes/fluentd-daemonset.yaml
Verifica che i pod fluidi siano stati avviati:
kubectl get pods --namespace=kube-system
Se sono in esecuzione, vedrai un output simile al seguente:
Verifica di visualizzare i log in Logging. Nella console, sul lato sinistro, seleziona Logging > Esplora log, quindi seleziona Container Kubernetes come tipo di risorsa nell'elenco Risorsa.
Fai clic su Esegui query.
Nell'Explorer campi dei log, seleziona test-logger per CONTAINER_NAME:
Filtraggio delle informazioni dal file di log
Il passaggio successivo consiste nello specificare che Fluentd deve filtrare determinati dati in modo che non vengano registrati. Per questo tutorial, filtrerai i codici fiscali, i numeri di carte di credito e gli indirizzi email. Per eseguire questo aggiornamento, modifica il daemonset in modo da utilizzare un ConfigMap diverso che contenga questi filtri. Utilizzi gli aggiornamenti in sequenza di Kubernetes e conservi la versione precedente del ConfigMap.
Apri il file
kubernetes/fluentd-configmap.yaml
in un editor.Rimuovi il commento dalle righe tra le righe
### sample log scrubbing filters
e### end sample log scrubbing filters
escluse:Cambia il nome del ConfigMap da
fluentd-gcp-config
afluentd-gcp-config-filtered
modificando il campometadata.name
:Salva e chiudi il file.
Aggiornamento del daemonset Fluentd per utilizzare la nuova configurazione
Ora modifichi kubernetes/fluentd-daemonset.yaml
per montare
ConfigMap fluentd-gcp-config-filtered
anziché fluentd-gcp-config
.
Apri il file
kubernetes/fluentd-daemonset.yaml
in un editor.Cambia il nome del ConfigMap da
fluentd-gcp-config
afluentd-gcp-config-filtered
modificando il campoconfigMap.name
:Esegui il deployment della nuova versione di ConfigMap nel cluster:
kubectl apply -f kubernetes/fluentd-configmap.yaml
Implementa la nuova versione del daemonset:
kubectl apply -f kubernetes/fluentd-daemonset.yaml
Implementa l'aggiornamento e attendi che venga completato:
kubectl rollout status ds/fluentd-gcp --namespace=kube-system
Al termine dell'implementazione, aggiorna i log di Logging e assicurati che i dati relativi al codice fiscale, al numero della carta di credito e all'indirizzo email siano stati filtrati.
Logging degli eventi a livello di nodo
Se vuoi che gli eventi che si verificano sui tuoi nodi GKE vengano visualizzati anche in Logging, aggiungi le seguenti righe a ConfigMap e segui le istruzioni descritte nell'ultima sezione:
<source> @type systemd filters [{ "SYSLOG_IDENTIFIER": "sshd" }] pos_file /var/log/journal/gcp-journald-ssh.pos read_from_head true tag sshd </source> <source> @type systemd filters [{ "SYSLOG_IDENTIFIER": "sudo" }] pos_file /var/log/journal/gcp-journald-sudo.pos read_from_head true tag sudo </source>
Esegui la pulizia
Dopo aver completato il tutorial, puoi eseguire la pulizia delle risorse che hai creato in Google Cloud in modo che non ti vengano addebitati costi in futuro.
Elimina il progetto
Il modo più semplice per eliminare la fatturazione è eliminare il progetto che hai creato per il tutorial.
Per eliminare il progetto:
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
Eliminazione del cluster GKE
Se non vuoi eliminare l'intero progetto, esegui questo comando per eliminare il cluster GKE:
gcloud container clusters delete gke-with-custom-fluentd --zone us-east1-b
Passaggi successivi
- Consulta in dettaglio la documentazione di Fluentd.
- Consulta in maggiore dettaglio la documentazione di Google Kubernetes Engine.
- Esplora le architetture di riferimento, i diagrammi e le best practice su Google Cloud. Visita il nostro Cloud Architecture Center.