In diesem Thema wird beschrieben, wie Sie die TKG-Erweiterung v1.3.1 für Fluent Bit bereitstellen. Fluent Bit ist ein schneller, schlanker Protokollprozessor sowie eine schnelle Protokollweiterleitungsfunktion, mit der Sie Anwendungsdaten und -protokolle aus verschiedenen Quellen erfassen, vereinheitlichen und an mehrere Ziele senden können. Stellen Sie die TKG-Erweiterung für Fluent Bit zur Erfassung und Weiterleitung von Tanzu Kubernetes-Clusterprotokollen am gewünschten Ziel bereit.
Voraussetzungen für die Erweiterung
- Stellen Sie einen Cluster bereit. Weitere Informationen hierzu finden Sie unter Workflow zu Bereitstellung von Tanzu Kubernetes-Clustern mithilfe der TKGS-v1alpha2-API.
- Stellen Sie eine Verbindung zum Cluster her. Weitere Informationen hierzu finden Sie unter Herstellen einer Verbindung mit einem Tanzu Kubernetes-Cluster als vCenter Single Sign-On-Benutzer.
- Herunterladen des TKG-Erweiterungspakets v1.3.1 auf Ihren Clienthost, auf dem Sie kubectl ausführen.
- Voraussetzungen für die Installation von TKG-Erweiterungen auf dem Zielcluster.
Bereitstellen der Fluent Bit-Erweiterung
Container | Ressourcentyp | Replikate | Beschreibung |
---|---|---|---|
Fluent Bit | DaemonSet | 6 | Protokoll-Collector, Aggregator, Weiterleitungsfunktion |
- Überprüfen Sie, ob die Voraussetzungen für die Erweiterung erfüllt sind. Weitere Informationen finden Sie unter Voraussetzungen für die Erweiterung.
- Wechseln Sie in das Verzeichnis für die Fluent Bit-Erweiterung.
cd /tkg-extensions-v1.3.1+vmware.1/extensions/logging/fluent-bit
- Erstellen Sie den
tanzu-system-logging
-Namespace, das Fluent Bit-Dienstkonto und die Rollenobjekte.kubectl apply -f namespace-role.yaml
- Geben Sie das für Fluent Bit zu verwendende Protokollziel an. Zu den unterstützten Ausgaben gehören Elasticsearch, HTTP, Kafka, Splunk und Syslog. Weitere Informationen hierzu finden Sie unter https://docs.fluentbit.io/manual/pipeline/outputs.
- Erstellen Sie eine Datei mit Fluent Bit-Datenwerten für Ihr ausgewähltes Protokollziel, indem Sie eine der
<LOG_BACKEND>/fluent-bit-data-values.example.yaml
-Dateien kopieren.Für jedes unterstützte Protokollziel gibt es eine Beispieldatei mit Datenwerten. Im Beispiel wird die Mindestkonfiguration für dieses Protokollziel angegeben.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
- Konfigurieren Sie die Fluent Bit-Erweiterung, indem Sie die Datei
<LOG_BACKEND>/fluent-bit-data-values.yaml
befüllen. Unter Konfigurieren der Fluent Bit-Erweiterung finden Sie eine Beschreibung der Felder und Optionen.Die Fluent Bit-Syslog-Konfiguration benötigt beispielsweise folgende Werte: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>"
Eine aufgefüllte Datenwertedatei für Fluent Bit-Syslog könnte die folgende Konfiguration aufweisen: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"
- Erstellen Sie einen geheimen Fluent Bit-Schlüssel mit Datenwerten für Ihr Protokollziel.
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
wird im Namespacetanzu-system-logging
erstellt. Verwenden Sie für die Überprüfung den folgenden Befehl:kubectl get secrets -n tanzu-system-logging
- Stellen Sie die Fluent Bit-App bereit.
kubectl apply -f fluent-bit-extension.yaml
Bei Erfolg sollte
app.kappctrl.k14s.io/fluent-bit created
angezeigt werden. - Überprüfen Sie den Status der Fluent Bit-App.
kubectl get app fluent-bit -n tanzu-system-logging
Bei Erfolg sollte sich der Status vonReconciling
inReconcile succeeded
ändern. Wenn der StatusReconcile failed
lautet, finden Sie weitere Informationen unter Fehlerbehebung bei der Fluent Bit-Bereitstellung. - Zeigen Sie detaillierte Statusinformationen über die App an.
kubectl get app fluent-bit -n tanzu-system-logging -o yaml
- Überprüfen Sie das Fluent Bit-DaemonSet.
kubectl get daemonsets -n tanzu-system-logging
Bei Erfolg sollte Folgendes angezeigt werden:NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE fluent-bit 6 6 6 6 6 <none> 105s
Fehlerbehebung bei der Fluent Bit-Bereitstellung
Wenn die Bereitstellung oder der Abgleich fehlschlägt, führen Sie kubectl get pods -A
aus, um den Pod-Status anzuzeigen. Die fluent-bit
-Pods sollten den Status Running
aufweisen. Wenn der Pod-Status ImagePullBackOff
oder ImageCrashLoopBackOff
lautet, konnte das Container-Image nicht abgerufen werden. Überprüfen Sie die Registrierungs-URL in den Datenwerten und den YAML-Dateien der Erweiterung und achten Sie darauf, dass sie korrekt sind.
name-XXXX
der eindeutige Pod-Name ist, der beim Ausführen von
kubectl get pods -A
angezeigt wird:
kubectl logs pod/fluent-bit-XXXXX -c fluent-bit -n tanzu-system-logging
Aktualisieren der Fluent Bit-Erweiterung
Aktualisieren Sie die auf einem Tanzu Kubernetes-Cluster bereitgestellte Fluent Bit-Erweiterung.
- Rufen Sie die Fluent Bit-Datenwerte vom geheimen Schlüssel ab.
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
- Aktualisieren Sie die Fluent Bit-Datenwerte in
fluent-bit-data-values.yaml
. Weitere Informationen finden Sie unter Konfigurieren der Fluent Bit-Erweiterung. - Aktualisieren Sie den geheimen Schlüssel mit den Fluent Bit-Datenwerten.
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-
Die Fluent Bit-Erweiterung wird erneut mit den oben genannten Datenwerten abgeglichen.Hinweis: Standardmäßig synchronisiert kapp-controller die Apps alle 5 Minuten. Das Update sollte in 5 Minuten oder weniger wirksam werden. Wenn das Update sofort wirksam werden soll, ändern SiesyncPeriod
influent-bit-extension.yaml
in einen niedrigeren Wert und wenden Sie die Fluent Bit-Erweiterung mithilfe derkubectl apply -f fluent-bit-extension.yaml
an. - Überprüfen Sie den Zustand der Erweiterung.
kubectl get app fluent-bit -n tanzu-system-logging
- Zeigen Sie den detaillierten Zustand an und führen Sie eine Fehlerbehebung durch.
kubectl get app fluent-bit -n tanzu-system-logging -o yaml
- Beheben Sie gegebenenfalls Fehler. Weitere Informationen finden Sie unter Fehlerbehebung bei der Fluent Bit-Bereitstellung.
Löschen der Fluent Bit-Erweiterung
- Wechseln Sie in das Verzeichnis für die Fluent Bit-Erweiterung.
cd extensions/logging/fluent-bit/
- Löschen Sie die Fluent Bit-App.
kubectl delete app fluent-bit -n tanzu-system-logging
Erwartetes Ergebnis:
app.kappctrl.k14s.io "fluent-bit" deleted
. - Stellen Sie sicher, dass die Fluent Bit-App gelöscht wurde.
kubectl get app fluent-bit -n tanzu-system-logging
Erwartetes Ergebnis:
apps.kappctrl.k14s.io "fluent-bit" not found
. - Löschen Sie den
tanzu-system-logging
-Namespace, das Fluent Bit-Erweiterungsdienstkonto und die Rollenobjekte.kubectl delete -f namespace-role.yaml
Upgrade der Fluent Bit-Erweiterung
- Exportieren Sie die Fluent Bit-Configmap.
kubectl get configmap fluent-bit -n tanzu-system-logging -o 'go-template={{ index .data "fluent-bit.yaml" }}' > fluent-bit-configmap.yaml
- Löschen Sie die vorhandene Fluent Bit-Bereitstellung. Weitere Informationen hierzu finden Sie unter Löschen der Fluent Bit-Erweiterung.
- Stellen Sie die neueste Fluent Bit-Erweiterung bereit. Weitere Informationen hierzu finden Sie unter Bereitstellen der Fluent Bit-Erweiterung.
Konfigurieren der Fluent Bit-Erweiterung
extensions/logging/fluent-bit/<LOG_BACKEND>/fluent-bit-data-values.yaml
festgelegt.
Parameter | Beschreibung | Typ | Standard |
---|---|---|---|
logging.namespace | Namespace, in dem Fluent Bit bereitgestellt wird | string | tanzu-system-logging |
logging.service_account_name | Name des Fluent Bit-Dienstkontos | string | fluent-bit |
logging.cluster_role_name | Name der Clusterrolle, die Fluent Bit „Get“-, „Watch“- und „List“-Berechtigungen gewährt | string | fluent-bit-read |
logging.image.name | Name des Fluent Bit-Images | string | fluent-bit |
logging.image.tag | Fluent Bit-Image-Tag. Dieser Wert muss möglicherweise aktualisiert werden, wenn Sie ein Upgrade der Version durchführen. | string | v1.6.9_vmware.1 |
logging.image.repository | Speicherort des Repositorys mit dem Fluent Bit-Image. Als Standardwert wird die öffentliche VMware-Registrierung verwendet. Ändern Sie diesen Wert, wenn Sie ein privates Repository verwenden (z. B. Air-Gap-Umgebung). | string | projects.registry.vmware.com/tkg |
logging.image.pullPolicy | Pull-Richtlinie des Fluent Bit-Images | string | IfNotPresent |
logging.update_strategy | Update-Strategie, die bei der DaemonSet-Aktualisierung verwendet werden soll | string | RollingUpdate |
tkg.cluster_name | Name des Tanzu Kubernetes-Clusters | string | Null (Obligatorischer Parameter) |
tkg.instance_name | Benutzerdefinierter Name der TKG-Instanz, der vom Supervisor-Cluster und allen Tanzu Kubernetes-Clustern in einer Bereitstellung gemeinsam genutzt wird. Sie können einen beliebigen Namen im Zusammenhang mit der Installation verwenden. | string | Null (Obligatorischer Parameter)
Hinweis: Dieses Feld ist obligatorisch, aber beliebig. Es handelt sich um einen Namen, der in den Protokollen angezeigt wird.
|
fluent_bit.log_level | Zu verwendende Protokollebene für Fluent Bit | string | Info |
fluent_bit.output_plugin | Legen Sie das Backend fest, an das Fluent Bit die erfassten Informationen übermitteln soll | string | Null (Obligatorischer Parameter) |
fluent_bit.elasticsearch.host | IP-Adresse oder Hostname der Elasticsearch-Zielinstanz | string | Null (obligatorischer Parameter, wenn output_plugin eine elastische Suche ist) |
fluent_bit.elasticsearch.port | TCP-Port der Elasticsearch-Zielinstanz | integer | Null (obligatorischer Parameter, wenn output_plugin eine elastische Suche ist) |
fluent_bit.elasticsearch.buffer_size | Geben Sie die Puffergröße an, die zum Lesen der Antwort des Elasticsearch-Diensts verwendet wird. Wird auf „Unbegrenzt“ festgelegt, wenn „False“ | string | False |
fluent_bit.elasticsearch.tls | Geben Sie die Standardeinstellung für TLS für Elasticsearch an | string | Aus |
fluent_bit.kafka.broker_service_name | Eine aus mehreren Listen mit Kafka-Brokern, z. B.: 192.168.1.3:9092 | string | Null (obligatorischer Parameter, wenn output_plugin Kafka ist) |
fluent_bit.kafka.topic_name | Ein einzelner Eintrag oder eine Liste von Themen, die durch (,) getrennt sind, die Fluent Bit zum Senden von Nachrichten an Kafka vrwendet | string | Null (obligatorischer Parameter, wenn output_plugin Kafka ist) |
fluent_bit.splunk.host | IP-Adresse oder Hostname des Splunk-Zielservers | string | Null (obligatorischer Parameter, wenn output_plugin Splunk ist) |
fluent_bit.splunk.port | TCP-Port des Splunk-Zielservers | integer | Null (obligatorischer Parameter, wenn output_plugin Splunk ist) |
fluent_bit.splunk.token | Angabe des Authentifizierungstokens für die HTTP Event Collector-Schnittstelle | string | Null (obligatorischer Parameter, wenn output_plugin Splunk ist) |
fluent_bit.http.host | IP-Adresse oder Hostname des HTTP-Zielservers | string | Null (obligatorischer Parameter, wenn output_plugin http ist) |
fluent_bit.http.port | TCP-Port des HTTP-Zielservers | integer | Null (obligatorischer Parameter, wenn output_plugin http ist) |
fluent_bit.http.mode | Angabe einer HTTP-URI für den Zielwebserver | string | Null (obligatorischer Parameter, wenn output_plugin http ist) |
fluent_bit.http.header_key_value | Schlüssel/Wert-Paar des HTTP-Headers. Es können mehrere Kopfzeilen festgelegt werden | string | Null (obligatorischer Parameter, wenn output_plugin http ist) |
fluent_bit.http.format | Geben Sie das Datenformat an, das im Textkörper der HTTP-Anforderung verwendet werden soll | string | Null (obligatorischer Parameter, wenn output_plugin http ist) |
fluent_bit.syslog.host | Domäne oder IP-Adresse des Remote-Syslog-Servers | string | Null (obligatorischer Parameter, wenn output_plugin Syslog ist) |
fluent_bit.syslog.port | TCP- oder UDP-Port des Remote-Syslog-Servers | integer | Null (obligatorischer Parameter, wenn output_plugin Syslog ist) |
fluent_bit.syslog.mode | Angabe des Transporttyps von TCP, UDP und TLS | string | Null (obligatorischer Parameter, wenn output_plugin Syslog ist) |
fluent_bit.syslog.format | Geben Sie das Datenformat an, das im Textkörper der HTTP-Anforderung verwendet werden soll | string | Null (obligatorischer Parameter, wenn output_plugin Syslog ist) |
host_path.volume_1 | Verzeichnispfad vom Dateisystem des Hostknotens in den Pod, für Volume 1 | string | /var/log |
host_path.volume_2 | Verzeichnispfad vom Dateisystem des Hostknotens in den Pod, für Volume 2 | string | /var/lib/docker/containers |
host_path.volume_3 | Verzeichnispfad vom Dateisystem des Hostknotens in den Pod, für Volume 3 | string | /run/log |
systemd.path | Pfad zum Systemd-Journalverzeichnis | string | /var/log/journal |