Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Richten Sie Fluent Bit ein, um Logs an Logs DaemonSet zu senden CloudWatch
Die folgenden Abschnitte helfen Ihnen bei der Bereitstellung von Fluent Bit, um Protokolle von Containern an Logs zu CloudWatch 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 ein, um Logs an Logs zu senden. CloudWatch 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 FluentD DaemonSet nicht wie erwartet läuft (dies kann passieren, wenn Sie die containerd
Runtime 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 gewährleistet die Kontinuität der Protokollierung während dieses Migrationsprozesses. Es wird nur eine von Fluent Bit oder FluentD benötigt, um Protokolle an Logs zu senden. CloudWatch
Protokollgruppenname | Protokollquelle |
---|---|
|
Alle Protokolldateien in |
|
Protokolle aus |
|
Die Protokolle in |
Um Fluent Bit zu installieren, um Logs von Containern an Logs zu senden CloudWatch
-
Wenn Sie noch keinen Namespace namens
amazon-cloudwatch
haben, 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 einen ConfigMap Namen
cluster-info
mit dem Clusternamen und der Region zu erstellen, an die Protokolle gesendet werden sollen. Ersetzen Siecluster-name
undcluster-region
durch den Namen und die Region Ihres Clusters.ClusterName=
cluster-name
RegionName=cluster-region
FluentBitHttpPort='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
FluentBitHttpServer
zum Ü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 für Fluent Bit optimierte Konfiguration für Linux-Computer verwenden möchten, 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 für Fluent Bit optimierte Konfiguration für Windows-Computer verwenden möchten, 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 verwenden 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 legt die Protokollebene standardmäßig auf INFO fest, was zu höheren Kosten für die Protokollaufnahme führen kann. CloudWatch 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-Bit
im 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-role
im Namespaceamazon-cloudwatch
. Dieser Cluster-Rolle gewährtget
,list
undwatch
Berechtigungen für Pod-Protokolle an das ServicekontoFluent-Bit
. Weitere Informationen finden Sie unter API Overviewin der Kubernetes-Dokumentation. -
Ein im Namespace benannter ConfigMap .
Fluent-Bit-config
amazon-cloudwatch
Dies 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 zu Kubernetes Tasks.
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 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 Datenvolumen reduzieren möchten, an das gesendet wird CloudWatch, können Sie verhindern, dass eine oder beide dieser Datenquellen gesendet werden. CloudWatch Wenn Sie die Schritte auf dieser Seite zur Einrichtung von Fluent Bit befolgt haben, laden Sie die Kubernetes-Manifest-YAML-Datei aus dem apply
kubectl-Befehl herunter, den Sie zuvor ausgeführt haben, und ändern Sie sie mit Ihren Änderungen, die Sie dann erneut auf Ihren Cluster anwenden können. Wenn Sie das Amazon CloudWatch Observability EKS-Add-on oder das Helm-Diagramm verwenden, finden Sie alternativ Informationen (Optional) Zusätzliche Konfiguration zur Verwaltung der Fluent-Bit-Konfiguration mithilfe der erweiterten Konfiguration des Add-ons oder des Helm-Diagramms unter.
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 verhindern, dass Kubernetes-Metadaten an Protokollereignisse angehängt werden, an die gesendet werden CloudWatch, fügen Sie dem application-log.conf
Abschnitt in der Fluent Bit-Konfiguration die folgenden Filter hinzu. Ersetzen Sie <Metadata_1>
und ähnliche Felder durch die tatsächlichen Metadaten-Identifikatoren.
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.
Fehlerbehebung
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 sowie für die Verarbeitungsraten von Datensätzen sowie für Ausgabefehler und retry/failed -raten anzeigen. Um diese Metriken anzuzeigen, müssen Sie den CloudWatch Agenten mit der Prometheus-Metrikerfassung für Amazon EKS- und Kubernetes-Cluster installieren. Weitere Informationen zum Einrichten des Dashboards finden Sie unter Installieren Sie den CloudWatch Agenten mit der Erfassung von Prometheus-Metriken 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_name
REGION_NAME=your_metric_region_such_as_us-west-1
CLUSTER_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