Richten Sie Fluent Bit als DaemonSet ein, um Protokolle an CloudWatch Logs zu senden
In den folgenden Abschnitten können Sie Fluent Bit bereitstellen, um Protokolle von Containern an CloudWatch Logs zu senden.
Themen
Einrichten von Fluent Bit
Um Fluent Bit so einzurichten, dass Protokolle von Ihren Containern erfasst werden, können Sie die Schritte unter Schnellstarteinrichtung für Container Insights auf Amazon EKS und Kubernetes oder die Schritte in diesem Abschnitt befolgen.
Bei beiden Methoden muss die an die Cluster-Knoten angefügte IAM-Rolle über ausreichende Berechtigungen verfügen. Weitere Informationen zu den Berechtigungen, die zum Ausführen eines Amazon-EKS-Clusters erforderlich sind, finden Sie unter Amazon-EKS-IAM-Richtlinien, -Rollen und -Berechtigungen im Amazon-EKS-Benutzerhandbuch.
In den folgenden Schritten richten Sie Fluent Bit als DaemonSet zum Senden von Protokollen an CloudWatch Logs ein. Wenn Sie diesen Schritt abgeschlossen haben, erstellt Fluent Bit die folgenden Protokollgruppen, sofern diese nicht bereits vorhanden ist.
Wichtig
Wenn Sie Fluentd bereits in Container Insights konfiguriert haben und das Fluentd DaemonSet nicht wie erwartet läuft (dies kann passieren, wenn Sie die containerd-Laufzeit verwenden), müssen Sie es vor der Installation von Fluent Bit deinstallieren, um zu verhindern, dass Fluent Bit die Fluentd-Fehlerprotokollmeldungen verarbeitet. Andernfalls müssen Sie Fluentd sofort deinstallieren, nachdem Sie Fluent Bit erfolgreich installiert haben. Die Deinstallation von Fluentd nach der Installation von Fluent Bit sorgt für die Kontinuität der Protokollierung während dieses Migrationsprozesses. Sie benötigen nur entweder Fluent Bit oder Fluentd, um Protokolle an CloudWatch Logs zu senden.
| Protokollgruppenname | Protokollquelle |
|---|---|
|
|
Alle Protokolldateien in |
|
|
Protokolle aus |
|
|
Die Protokolle in |
So installieren Sie Fluent Bit, um Protokolle von Containern an CloudWatch Logs zu senden
-
Wenn Sie noch keinen Namespace namens
amazon-cloudwatchhaben, erstellen Sie einen, indem Sie den folgenden Befehl eingeben:kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cloudwatch-namespace.yaml -
Führen Sie den folgenden Befehl aus, um eine ConfigMap mit dem Namen
cluster-infomit dem Clusternamen und der Region zu erstellen, an die Protokolle gesendet werden sollen. Ersetzen Siecluster-nameundcluster-regiondurch den Namen und die Region des -Clusters.ClusterName=cluster-nameRegionName=cluster-regionFluentBitHttpPort='2020' FluentBitReadFromHead='Off' [[ ${FluentBitReadFromHead} = 'On' ]] && FluentBitReadFromTail='Off'|| FluentBitReadFromTail='On' [[ -z ${FluentBitHttpPort} ]] && FluentBitHttpServer='Off' || FluentBitHttpServer='On' kubectl create configmap fluent-bit-cluster-info \ --from-literal=cluster.name=${ClusterName} \ --from-literal=http.server=${FluentBitHttpServer} \ --from-literal=http.port=${FluentBitHttpPort} \ --from-literal=read.head=${FluentBitReadFromHead} \ --from-literal=read.tail=${FluentBitReadFromTail} \ --from-literal=logs.region=${RegionName} -n amazon-cloudwatchIn diesem Befehl ist das
FluentBitHttpServerzum Überwachen von Plug-in-Metriken standardmäßig aktiviert. Um es auszuschalten, ändern Sie die dritte Zeile im Befehl inFluentBitHttpPort=''(leere Zeichenfolge) im Befehl.Außerdem liest Fluent Bit standardmäßig Protokolldateien aus dem Trail und erfasst nach der Bereitstellung nur neue Protokolle. Wenn Sie das Gegenteil wünschen, legen Sie
FluentBitReadFromHead='On'fest und es werden alle Protokolle im Dateisystem gesammelt. -
Laden Sie das Fluent-Bit-DaemonSet herunter und stellen Sie es für den Cluster bereit, indem Sie den folgenden Befehl ausführen.
-
Wenn Sie die Fluent-Bit-optimierte Konfiguration für Linux-Computer wünschen, führen Sie diesen Befehl aus.
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit.yaml -
Wenn Sie die Fluent-Bit-optimierte Konfiguration für Windows-Computer wünschen, führen Sie diesen Befehl aus.
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit-windows.yaml -
Wenn Sie Linux-Computer nutzen und eine Fluent-Bit-Konfiguration wünschen, die Fluentd ähnlicher ist, führen Sie diesen Befehl aus.
kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/fluent-bit/fluent-bit-compatible.yaml
Wichtig
Die Fluent Bit Daemonset-Konfiguration setzt den Protokoll-Level standardmäßig auf INFO, was zu höheren CloudWatch-Logs-Aufnahmekosten führen kann. Wenn Sie das Aufnahmevolumen und die Kosten von Protokollen reduzieren möchten, können Sie die Protokollebene auf ERROR ändern.
Weitere Informationen darüber, wie Sie das Protokollvolumen reduzieren, finden Sie unter (Optional) Reduzieren des Protokoll-Volumes von Fluent Bit
-
-
Überprüfen Sie die Bereitstellung, indem Sie den folgenden Befehl eingeben. Jeder Knoten sollte über eine Pod mit dem Namen fluent-bit-* verfügen.
kubectl get pods -n amazon-cloudwatch
Die obigen Schritte erstellen die folgenden Ressourcen im Cluster:
-
Ein Servicekonto mit dem Namen
Fluent-Bitim Namespaceamazon-cloudwatch. Dieses Service-Konto wird zum Ausführen des Fluent Bit daemonSet verwendet. Weitere Informationen finden Sie unter Managing Service Accountsin der Kubernetes-Dokumentation. -
Eine Cluster-Rolle mit dem Namen
Fluent-Bit-roleim Namespaceamazon-cloudwatch. Dieser Cluster-Rolle gewährtget,listundwatchBerechtigungen für Pod-Protokolle an das ServicekontoFluent-Bit. Weitere Informationen finden Sie unter API Overviewin der Kubernetes-Dokumentation. -
Eine ConfigMap mit dem Namen
Fluent-Bit-configim Namespaceamazon-cloudwatch. Diese ConfigMap enthält die Konfiguration, die von Fluent Bit verwendet werden soll. Weitere Informationen finden Sie unter Configure a Pod to Use a ConfigMapin der Dokumentation der Kubernetes-Aufgaben.
Wenn Sie Ihre Fluent-Bit–Einrichtung überprüfen möchten, führen Sie diese Schritte aus.
Überprüfen der Fluent-Bit-Einrichtung
Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/
. -
Wählen Sie im Navigationsbereich Log groups (Protokollgruppen) aus.
-
Stellen Sie sicher, dass Sie sich in der Region befinden, in der Sie Fluent Bit bereitgestellt haben.
-
Überprüfen Sie die Liste der Protokollgruppen in der Region. Sie sollten Folgendes sehen:
-
/aws/containerinsights/Cluster_Name/application -
/aws/containerinsights/Cluster_Name/host -
/aws/containerinsights/Cluster_Name/dataplane
-
-
Navigieren Sie zu einer dieser Protokollgruppen und überprüfen Sie die letzte Ereigniszeit für die Protokollstreams Wenn es in letzter Zeit relativ zum Zeitpunkt der Bereitstellung von Fluent Bit ist, wird die Einrichtung überprüft.
Es kann eine leichte Verzögerung beim Erstellen der
/dataplane-Protokollgruppe geben. Dies ist normal, da diese Protokollgruppen nur erstellt werden, wenn Fluent Bit beginnt, Protokolle für diese Protokollgruppe zu senden.
Unterstützung für mehrzeilige Protokolle
Informationen zur Verwendung von Fluent Bit mit mehrzeiligen Protokollen finden Sie in den folgenden Abschnitten der Fluent-Bit-Dokumentation:
(Optional) Reduzieren des Protokoll-Volumes von Fluent Bit
Standardmäßig senden wir Fluent-Bit-Anwendungsprotokolle und Kubernetes-Metadaten an CloudWatch. Wenn Sie das Volumen der an CloudWatch gesendeten Daten reduzieren möchten, können Sie verhindern, dass eine oder beide dieser Datenquellen an CloudWatch gesendet werden. Wenn Sie die Schritte auf dieser Seite zur Einrichtung von Fluent Bit befolgt haben, laden Sie die Kubernetes-Manifest-YAML-Datei aus dem kubectl-apply-Befehl herunter, den Sie zuvor ausgeführt haben, und ändern Sie sie nach Ihren Wünschen, die Sie dann erneut auf Ihren Cluster anwenden können. Wenn Sie das EKS-Add-On für Amazon CloudWatch Observability oder das Helm-Chart nutzen, finden Sie unter (Optional) Zusätzliche Konfiguration alternativ Informationen zur Verwaltung der Fluent-Bit-Konfiguration mithilfe der erweiterten Konfiguration des Add-Ons oder des Helm-Charts.
Um Fluent-Bit-Anwendungsprotokolle zu beenden, entfernen Sie den folgenden Abschnitt aus der Fluent Bit configuration-Datei.
[INPUT] Name tail Tag application.* Path /var/log/containers/fluent-bit* Parser docker DB /fluent-bit/state/flb_log.db Mem_Buf_Limit 5MB Skip_Long_Lines On Refresh_Interval 10
Um zu entfernen, dass Kubernetes-Metadaten an Protokollereignisse angehängt werden, die an CloudWatch gesendet werden, fügen Sie die folgenden Filter zum Abschnitt application-log.conf in der Fluent-Bit-Konfiguration hinzu. Ersetzen Sie <Metadata_1> und ähnliche Felder durch die tatsächlichen Metadaten-Bezeichner.
application-log.conf: | [FILTER] Name nest Match application.* Operation lift Nested_under kubernetes Add_prefix Kube. [FILTER] Name modify Match application.* Remove Kube.<Metadata_1>Remove Kube.<Metadata_2>Remove Kube.<Metadata_3>[FILTER] Name nest Match application.* Operation nest Wildcard Kube.* Nested_under kubernetes Remove_prefix Kube.
Fehlersuche
Wenn diese Protokollgruppen bei Ansicht der richtigen Region nicht finden, überprüfen Sie die Protokolle für die DaemonSet-Fluent-Bit-Pods auf Fehler.
Führen Sie den folgenden Befehl aus und stellen Sie sicher, dass der Status Running lautet.
kubectl get pods -n amazon-cloudwatch
Wenn die Protokolle Fehler im Zusammenhang mit IAM-Berechtigungen enthalten, überprüfen Sie an die Cluster-Knoten angefügte IAM-Rolle. Weitere Informationen zu den Berechtigungen, die zum Ausführen eines Amazon-EKS-Clusters erforderlich sind, finden Sie unter Amazon-EKS-IAM-Richtlinien, -Rollen und -Berechtigungen im Amazon-EKS-Benutzerhandbuch.
Wenn der Pod-Status CreateContainerConfigError lautet, rufen Sie den genauen Fehler ab, indem Sie den folgenden Befehl ausführen.
kubectl describe pod pod_name -n amazon-cloudwatch
Dashboard
Sie können ein Dashboard erstellen, um Metriken jedes ausgeführten Plug-Ins zu überwachen. Sie können Daten für Eingabe- und Ausgabebytes und für Datensatzverarbeitungsraten sowie Ausgabefehler und Wiederholungs-/Fehlgeschlagene Raten sehen. Um diese Metriken anzuzeigen, müssen Sie den CloudWatch-Agenten mit der Prometheus-Metrikensammlung für Amazon-EKS- und Kubernetes-Cluster installieren. Weitere Informationen zum Einrichten des Dashboards finden Sie unter Installieren Sie den CloudWatch-Agenten mit der Prometheus-Metrikensammlung auf Amazon-EKS- und Kubernetes-Clustern.
Anmerkung
Bevor Sie dieses Dashboard einrichten können, müssen Sie Container Insights für Prometheus-Metriken einrichten. Weitere Informationen finden Sie unter Überwachung von Container Insights Prometheus-Metriken.
So erstellen Sie ein Dashboard für die Fluent-Bit-Prometheus-Metriken
-
Erstellen Sie Umgebungsvariablen, indem Sie die Werte auf der rechten Seite in den folgenden Zeilen entsprechend Ihrer Bereitstellung ersetzen.
DASHBOARD_NAME=your_cw_dashboard_nameREGION_NAME=your_metric_region_such_as_us-west-1CLUSTER_NAME=your_kubernetes_cluster_name -
Erstellen Sie das Dashboard, indem Sie den folgenden Befehl ausführen.
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/fluent-bit/cw_dashboard_fluent_bit.json \ | sed "s/{{YOUR_AWS_REGION}}/${REGION_NAME}/g" \ | sed "s/{{YOUR_CLUSTER_NAME}}/${CLUSTER_NAME}/g" \ | xargs -0 aws cloudwatch put-dashboard --dashboard-name ${DASHBOARD_NAME} --dashboard-body