Richten Sie Fluent Bit ein, um Logs an Logs DaemonSet zu senden CloudWatch - Amazon CloudWatch

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.

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

/aws/containerinsights/Cluster_Name/application

Alle Protokolldateien in /var/log/containers

/aws/containerinsights/Cluster_Name/host

Protokolle aus /var/log/dmesg, /var/log/secure und /var/log/messages

/aws/containerinsights/Cluster_Name/dataplane

Die Protokolle in /var/log/journal für kubelet.service, kubeproxy.service und docker.service.

Um Fluent Bit zu installieren, um Logs von Containern an Logs zu senden CloudWatch
  1. 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
  2. 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 Sie cluster-name und cluster-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-cloudwatch

    In diesem Befehl ist das FluentBitHttpServer zum Überwachen von Plug-in-Metriken standardmäßig aktiviert. Um es auszuschalten, ändern Sie die dritte Zeile im Befehl in FluentBitHttpPort='' (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.

  3. 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

  4. Ü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 Namespace amazon-cloudwatch. Dieses Service-Konto wird zum Ausführen des Fluent Bit daemonSet verwendet. Weitere Informationen finden Sie unter Managing Service Accounts in der Kubernetes-Dokumentation.

  • Eine Cluster-Rolle mit dem Namen Fluent-Bit-role im Namespace amazon-cloudwatch. Dieser Cluster-Rolle gewährt get, list und watch Berechtigungen für Pod-Protokolle an das Servicekonto Fluent-Bit. Weitere Informationen finden Sie unter API Overview in 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 ConfigMap in 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
  1. Öffnen Sie die CloudWatch Konsole unter. https://console.aws.amazon.com/cloudwatch/

  2. Wählen Sie im Navigationsbereich Protokollgruppen aus.

  3. Stellen Sie sicher, dass Sie sich in der Region befinden, in der Sie Fluent Bit bereitgestellt haben.

  4. Ü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

  5. 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
  1. 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
  2. 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