Fluent Bit è un processore e server di inoltro di registro rapido e leggero che consente di raccogliere dati delle applicazioni e registri da origini diverse, unificarli e inviarli a più destinazioni. Distribuire l'estensione TKG per Fluent Bit per raccogliere e inoltrare i registri dei cluster Tanzu Kubernetes alla destinazione desiderata.
Prerequisiti dell'estensione
- Eseguire il provisioning di un cluster. Vedere Workflow per il provisioning di cluster di Tanzu Kubernetes.
- Connettersi al cluster. Vedere Connessione a un cluster Tanzu Kubernetes come utente vCenter Single Sign-On.
- Download del bundle delle estensioni TKG v1.3.1 nell'host client in cui viene eseguito kubectl.
- Installare i prerequisiti delle estensioni TKG nel cluster di destinazione.
Distribuzione dell'estensione Fluent Bit
Container | Tipo di risorsa | Repliche | Descrizione |
---|---|---|---|
Fluent Bit | DaemonSet | 6 | Agente di raccolta dei registri, aggregatore e server di inoltro |
- Verificare di aver completato tutti i prerequisiti dell'estensione. Vedere Prerequisiti dell'estensione.
- Passare alla directory con l'estensione Fluent Bit.
cd /tkg-extensions-v1.3.1+vmware.1/extensions/logging/fluent-bit
- Creare lo spazio dei nomi
tanzu-system-logging
, l'account del servizio Fluent Bit e gli oggetti ruolo.kubectl apply -f namespace-role.yaml
- Decidere la destinazione del registro da utilizzare per Fluent Bit. Gli output supportati includono Elasticsearch, HTTP,Kafka, Splunk e Syslog. Per ulteriori informazioni, vedere https://docs.fluentbit.io/manual/pipeline/outputs.
- Creare un file dei valori dei dati Fluent Bit per la destinazione di registro desiderata copiando uno dei file
<LOG_BACKEND>/fluent-bit-data-values.example.yaml
.È disponibile un file di valori di dati di esempio per ogni destinazione di registro supportata. L'esempio fornisce la configurazione minima per la destinazione del registro.cp elasticsearch/fluent-bit-data-values.yaml.example elasticsearch/fluent-bit-data-values.yaml
cp http/fluent-bit-data-values.yaml.example http/fluent-bit-data-values.yaml
cp kafka/fluent-bit-data-values.yaml.example kafka/fluent-bit-data-values.yaml
cp splunk/fluent-bit-data-values.yaml.example splunk/fluent-bit-data-values.yaml
cp syslog/fluent-bit-data-values.yaml.example syslog/fluent-bit-data-values.yaml
- Configurare l'estensione Fluent Bit compilando
<LOG_BACKEND>/fluent-bit-data-values.yaml
. Per una descrizione dei i campi e delle opzioni, vedere Configurazione dell'estensione Bit Fluent.Ad esempio, la configurazione syslog Fluent Bit richiede i valori seguenti:logging: image: repository: projects.registry.vmware.com/tkg # Public registry tkg: instance_name: "<TKG_INSTANCE_NAME>" #mandatory but arbitrary; appears in logs cluster_name: "<CLUSTER_NAME>" #name of the target tkgs cluster fluent_bit: output_plugin: "syslog" syslog: host: "<SYSLOG_HOST>" port: "<SYSLOG_PORT>" mode: "<SYSLOG_MODE>" format: "<SYSLOG_FORMAT>"
Un file di valori dei dati compilato per il syslog Fluent Bit potrebbe avere la seguente configurazione:logging: image: repository: projects.registry.vmware.com/tkg tkg: instance_name: "tkgs-cluster-1" cluster_name: "tkgs-cluster-1" fluent_bit: output_plugin: "syslog" syslog: host: "10.192.175.59" port: "514" mode: "tcp" format: "rfc5424"
- Creare un segreto Fluent Bit con valori dei dati per la destinazione del registro.
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=elasticsearch/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=kafka/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=splunk/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=http/fluent-bit-data-values.yaml -n tanzu-system-logging
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=syslog/fluent-bit-data-values.yaml -n tanzu-system-logging
secret/fluent-bit-data-values
viene creato nello spazio dei nomitanzu-system-logging
. Eseguire la verifica utilizzando il comando seguente:kubectl get secrets -n tanzu-system-logging
- Distribuire l'app Fluent Bit.
kubectl apply -f fluent-bit-extension.yaml
Al completamento, viene visualizzato il messaggio
app.kappctrl.k14s.io/fluent-bit created
. - Controllare lo stato dell'app Fluent Bit.
kubectl get app fluent-bit -n tanzu-system-logging
Al completamento, lo stato deve passare daReconciling
aReconcile succeeded
. Se lo stato èReconcile failed
, vedere Risoluzione dei problemi relativi alla distribuzione di Fluent Bit. - Visualizzare lo stato dettagliato sull'app.
kubectl get app fluent-bit -n tanzu-system-logging -o yaml
- Verificare il DeamonSet di Fluent Bit.
kubectl get daemonsets -n tanzu-system-logging
Al completamento, dovrebbe essere presente quanto segue:NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE fluent-bit 6 6 6 6 6 <none> 105s
Risoluzione dei problemi relativi alla distribuzione di Fluent Bit
Se la distribuzione o la riconciliazione non riesce, eseguire kubectl get pods -A
per visualizzare lo stato del pod. I pod di fluent-bit
devono essere Running
. Se lo stato di un pod è ImagePullBackOff
o ImageCrashLoopBackOff
, non è possibile estrarre l'immagine del container. Controllare l'URL del registro nei valori dei dati e nei file YAML dell'estensione e assicurarsi che sia corretto.
name-XXXX
è il nome univoco del pod che è possibile visualizzare quando si esegue
kubectl get pods -A
:
kubectl logs pod/fluent-bit-XXXXX -c fluent-bit -n tanzu-system-logging
Aggiornamento dell'estensione Fluent Bit
Aggiornare l'estensione Fluent Bit distribuita in un cluster Tanzu Kubernetes.
- Ottenere i valori dei dati di Fluent Bit dal segreto.
kubectl get secret fluent-bit-data-values -n tanzu-system-logging -o 'go-template={{ index .data "values.yaml" }}' | base64 -d > fluent-bit-data-values.yaml
- Aggiornare i valori dei dati di Fluent Bit in
fluent-bit-data-values.yaml
. Vedere Configurazione dell'estensione Bit Fluent. - Aggiornare il segreto dei valori dei dati di Fluent Bit.
kubectl create secret generic fluent-bit-data-values --from-file=values.yaml=fluent-bit-data-values.yaml -n tanzu-system-logging -o yaml --dry-run | kubectl replace -f-
L'estensione Fluent Bit verrà riconciliata di nuovo con i valori dei dati precedenti.Nota: Per impostazione predefinita, kapp-controller sincronizzerà le app ogni 5 minuti. L'aggiornamento dovrebbe essere applicato in 5 minuti al massimo. Se si desidera che l'aggiornamento venga applicato immediatamente, impostaresyncPeriod
influent-bit-extension.yaml
su un valore inferiore e applicare l'estensione Fluent Bit mediantekubectl apply -f fluent-bit-extension.yaml
. - Controllare lo stato dell'estensione.
kubectl get app fluent-bit -n tanzu-system-logging
- Visualizzare lo stato dettagliato e risolvere i problemi.
kubectl get app fluent-bit -n tanzu-system-logging -o yaml
- Risolvere i problemi se necessario. Vedere Risoluzione dei problemi relativi alla distribuzione di Fluent Bit.
Eliminare l'estensione Fluent Bit
- Passare alla directory con l'estensione Fluent Bit.
cd extensions/logging/fluent-bit/
- Eliminare l'app Fluent Bit.
kubectl delete app fluent-bit -n tanzu-system-logging
Risultato previsto:
app.kappctrl.k14s.io "fluent-bit" deleted
. - Verificare che l'app Fluent Bit sia eliminata.
kubectl get app fluent-bit -n tanzu-system-logging
Risultato previsto:
apps.kappctrl.k14s.io "fluent-bit" not found
. - Eliminare lo spazio dei nomi
tanzu-system-logging
, l'account del servizio di estensione Fluent Bit e gli oggetti ruolo.kubectl delete -f namespace-role.yaml
Upgrade dell'estensione Bit Fluent
- Esportare la mappa di configurazione di Fluent Bit.
kubectl get configmap fluent-bit -n tanzu-system-logging -o 'go-template={{ index .data "fluent-bit.yaml" }}' > fluent-bit-configmap.yaml
- Eliminare la distribuzione esistente di Fluent Bit. Vedere Eliminare l'estensione Fluent Bit.
- Distribuire l'estensione Fluent Bit più recente. Vedere Distribuzione dell'estensione Fluent Bit.
Configurazione dell'estensione Bit Fluent
extensions/logging/fluent-bit/<LOG_BACKEND>/fluent-bit-data-values.yaml
.
Parametro | Descrizione | Tipo | Predefinito |
---|---|---|---|
logging.namespace | Spazio dei nomi in cui verrà distribuito Fluent Bit | stringa | tanzu-system-logging |
logging.service_account_name | Nome dell'account del servizio Fluent Bit | stringa | fluent-bit |
logging.cluster_role_name | Nome del ruolo cluster che concede le autorizzazioni get, watch e list a Fluent Bit | stringa | fluent-bit-read |
logging.image.name | Nome dell'immagine Fluent Bit | stringa | fluent-bit |
logging.image.tag | Tag immagine Fluent Bit. Se si sta aggiornando la versione, potrebbe essere necessario aggiornare questo valore. | stringa | v1.6.9_vmware.1 |
logging.image.repository | Posizione del repository con l'immagine Fluent Bit. L'impostazione predefinita è il registro di VMware pubblico. Modificare questo valore se si utilizza un repository privato (ad esempio, un ambiente air gap). | stringa | projects.registry.vmware.com/tkg |
logging.image.pullPolicy | Criterio di pull dell'immagine bit Fluent | stringa | IfNotPresent |
logging.update_strategy | Aggiornare la strategia da utilizzare durante l'aggiornamento di DaemonSet | stringa | RollingUpdate |
tkg.cluster_name | Nome del cluster Tanzu Kubernetes | stringa | Null (parametro obbligatorio) |
tkg.instance_name | Nome definito dall'utente dell'istanza di TKG, condiviso dal cluster supervisore e tutti i cluster Tanzu Kubernetes in una sola distribuzione. È possibile utilizzare qualsiasi nome correlato all'installazione di. | stringa | Null (parametro obbligatorio)
Nota: Questo campo è obbligatorio ma arbitrario. Si tratta di un nome che compare nei registri.
|
fluent_bit.log_level | Livello di registro da utilizzare per Fluent Bit | stringa | info |
fluent_bit.output_plugin | Impostare il back-end in cui Fluent Bit deve scaricare le informazioni che raccoglie | stringa | Null (parametro obbligatorio) |
fluent_bit.elasticsearch.host | Indirizzo IP o nome host dell'istanza di Elasticsearch di destinazione | stringa | Null (parametro obbligatorio quando output_plugin è Elasticsearch) |
fluent_bit.elasticsearch.port | Porta TCP dell'istanza di Elasticsearch di destinazione | numero intero | Null (parametro obbligatorio quando output_plugin è Elasticsearch) |
fluent_bit.elasticsearch.buffer_size | Specificare le dimensioni del buffer utilizzate per leggere la risposta dal servizio Elasticsearch. Imposta come illimitato se False | stringa | False |
fluent_bit.elasticsearch.tls | Specificare l'impostazione predefinita per TLS per Elasticsearch | stringa | Disattivato |
fluent_bit.unifka.broker_service_name | Singolo di più elenchi di Kafka Brokers, ad es. 192.168.1.3:9092 | stringa | Null (parametro obbligatorio quando output_plugin è kafka) |
fluent_bit.unfka.topic_name | Voce singola o elenco di argomenti separati da (,) che Fluent Bit utilizzerà per inviare messaggi a Kafka | stringa | Null (parametro obbligatorio quando output_plugin è kafka) |
fluent_bit.splunk.host | Indirizzo IP o nome host del server Splunk di destinazione | stringa | Null (parametro obbligatorio quando output_plugin è splunk) |
fluent_bit.splunk.port | Porta TCP del server Splunk di destinazione | numero intero | Null (parametro obbligatorio quando output_plugin è splunk) |
fluent_bit.splunk.token | Specificare il token di autenticazione per l'interfaccia dell'agente di raccolta eventi HTTP | stringa | Null (parametro obbligatorio quando output_plugin è splunk) |
fluent_bit.http.host | Indirizzo IP o nome host del server HTTP di destinazione | stringa | Null (parametro obbligatorio quando output_plugin è http) |
fluent_bit.http.port | Porta TCP del server HTTP di destinazione | numero intero | Null (parametro obbligatorio quando output_plugin è http) |
fluent_bit.http.mode | Specificare un URI HTTP per il server Web di destinazione | stringa | Null (parametro obbligatorio quando output_plugin è http) |
fluent_bit.http.header_key_value | Coppia chiave/valore intestazione HTTP. È possibile impostare più intestazioni | stringa | Null (parametro obbligatorio quando output_plugin è http) |
fluent_bit.http.format | Specificare il formato dei dati da utilizzare nel corpo della richiesta HTTP | stringa | Null (parametro obbligatorio quando output_plugin è http) |
fluent_bit.syslog.host | Dominio o indirizzo IP del server syslog remoto | stringa | Null (parametro obbligatorio quando output_plugin è syslog) |
fluent_bit.syslog.port | Porta TCP o UDP del server syslog remoto | numero intero | Null (parametro obbligatorio quando output_plugin è syslog) |
fluent_bit.syslog.mode | Specificare il tipo di trasporto da TCP, UDP e TLS | stringa | Null (parametro obbligatorio quando output_plugin è syslog) |
fluent_bit.syslog.format | Specificare il formato dei dati da utilizzare nel corpo della richiesta HTTP | stringa | Null (parametro obbligatorio quando output_plugin è syslog) |
host_path.volume_1 | Percorso della directory dal file system del nodo host al pod per il volume 1 | stringa | /var/log |
host_path.volume_2 | Percorso della directory dal file system del nodo host al pod per il volume 2 | stringa | /var/lib/docker/containers |
host_path.volume_3 | Percorso della directory dal file system del nodo host al pod per il volume 3 | stringa | /run/log |
systemd.path | Percorso della directory Systemd journal | stringa | /var/log/journal |