Wie behebe ich Einrichtungsprobleme, wenn ich Fluent Bit in Container Insights für Amazon EKS integriere?

Lesedauer: 4 Minute
0

Ich möchte Einrichtungsprobleme beheben, wenn ich Fluent Bit in Amazon CloudWatch Container Insights für Amazon Elastic Kubernetes Service (Amazon EKS) integriere.

Kurzbeschreibung

Hinweis: Es ist eine bewährte Methode, Fluent Bit anstelle von Fluentd zu verwenden. Weitere Informationen finden Sie unter Senden von Protokollen an CloudWatch Logs.

Damit Fluent Bit Container-Protokolle an CloudWatch Logs übermitteln kann, müssen Sie Fluent Bit Berechtigungen für AWS Identity and Access Management (IAM) gewähren. Weitere Informationen finden Sie unter Voraussetzungen überprüfen.

Um Container Insights mit Fluent Bit zu verwenden, richten Sie eine IAM-Rolle für das Dienstkonto (IRSA) ein und stellen Sie dann Container Insights in Ihrem EKS Cluster bereit.

Behebung

Container Insights mit Fluent Bit einrichten

Verwenden Sie die von AWS verwaltete Richtlinie CloudWatchAgentServerPolicy, um ein cloudwatch-agent- und fluent-bit-Dienstkonto zu erstellen.

Führen Sie die folgenden Schritte aus:

  1. Führen Sie die folgenden Befehle aus, um die Umgebungsvariablen einzurichten:

    export CLUSTER=clustername
    export AWS_REGION=awsregion

    Hinweis: Ersetzen Sie clustername, awsregion durch Ihren eigenen Cluster-Namen und AWS-Region.

  2. Führen Sie den folgenden eksctl-Befehl aus, um ein CloudWatch-agent-Dienstkonto bei IRSA zu erstellen:

    eksctl create iamserviceaccount \
        --name cloudwatch-agent \
        --namespace amazon-cloudwatch \
        --cluster $CLUSTER \
        --attach-policy-arn "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy" \
        --approve \
        --override-existing-serviceaccounts
  3. Führen Sie den folgenden eksctl-Befehl aus, um das Fluent-Bit-Dienstkonto bei IRSA zu erstellen:

    eksctl create iamserviceaccount \
        --name fluent-bit \
        --namespace amazon-cloudwatch \
        --cluster $CLUSTER \
        --attach-policy-arn "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy" \
        --approve \
        --override-existing-serviceaccounts
  4. Führen Sie den folgenden Befehl aus, um den Schnellstart für die Bereitstellung von Container Insights zu verwenden

    :ClusterName=<my-cluster-name>
    RegionName=<my-cluster-region>
    FluentBitHttpPort='2020'
    FluentBitReadFromHead='Off'
    [[ ${FluentBitReadFromHead} = 'On' ]] && FluentBitReadFromTail='Off'|| FluentBitReadFromTail='On'
    [[ -z ${FluentBitHttpPort} ]] && FluentBitHttpServer='Off' || FluentBitHttpServer='On'
    curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/quickstart/cwagent-fluent-bit-quickstart-enhanced.yaml | sed 's/{{cluster_name}}/'${ClusterName}'/;s/{{region_name}}/'${RegionName}'/;s/{{http_server_toggle}}/"'${FluentBitHttpServer}'"/;s/{{http_server_port}}/"'${FluentBitHttpPort}'"/;s/{{read_from_head}}/"'${FluentBitReadFromHead}'"/;s/{{read_from_tail}}/"'${FluentBitReadFromTail}'"/' | kubectl apply -f -

    Hinweis: Ersetzen Sie my-cluster-name und my-cluster-region durch Ihren eigenen Cluster-Namen und Ihre eigene Region. Der vorhergehende Befehl erstellt ClusterRole, ClusterRoleBinding, ConfigMap und DaemonSet für den CloudWatch-Agenten und Fluent Bit.

  5. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der CloudWatch-Agent und Fluent Bit bereitgestellt werden:

    kubectl get pods -n amazon-cloudwatch

Wenn die Bereitstellung abgeschlossen ist, erstellt der CloudWatch-Agent die Protokollgruppe **/aws/containerinsights/Cluster_Name/Performance. **

Fluent Bit erstellt die Protokollgruppen /aws/containerinsights/Cluster_Name/application, /aws/containerinsights/Cluster_Name/host und /aws/containerinsights/Cluster_Name/dataplane.

Problembehebung bei der Einrichtung von Fluent Bit

Fluent Bit Pods stürzen ab

Gehen Sie wie folgt vor, um in den Fluent-Bit-Pod-Protokollen nach Fehlermeldungen zu suchen:

  1. Führen Sie die folgenden Befehle aus, um Ereignisse von Fluent Bit Pods zu finden:

    kubectl -n amazon-cloudwatch logs -l k8s-app=fluent-bit
    kubectl -n amazon-cloudwatch describe pod fluent_pod pod_name
  2. Stellen Sie sicher, dass cluster-info korrekt ist und keine Syntaxfehler enthält.

  3. Stellen Sie sicher, dass alle Cluster-Namen- und Regionswerte festgelegt sind. Weitere Informationen finden Sie unter amazon-cloudwatch-container-insights auf der GitHub Website.

Fluent Bit sendet keine Protokolle an CloudWatch

Gehen Sie zur Problembehandlung wie folgt vor:

  1. Stellen Sie sicher, dass das Ausgabe-Plugin in der Fluent-Bit-Konfigurationsdatei korrekt eingerichtet ist. Um zu überprüfen, ob Datenübertragungsfehler vorliegen, führen Sie den folgenden Befehl aus, um die Fluent-Bit-Pod-Protokolle anzuzeigen:

    kubectl -n amazon-cloudwatch logs fluent_pod_name
  2. Stellen Sie sicher, dass die Fluent Bit Pods über die erforderlichen IAM-Berechtigungen verfügen, um Protokollgruppen zu erstellen und Protokolle an CloudWatch zu streamen. Sie müssen die CloudWatchAgentServerPolicy-IAM-Richtlinie an die IAM-Rolle angehängt haben, die im Fluent-Bit-Dienstkonto mit Anmerkungen versehen ist.
    Wenn Sie IRSA verwendet haben, müssen Sie die IAM-Rolle an die Worker-Knoten anhängen. Weitere Informationen finden Sie unter Wie behebe ich IRSA-Fehler in Amazon EKS?

Wenn Sie bestimmte Anwendungsprotokolle nicht sehen, überprüfen Sie, ob Ihre Anwendung ausgeführt werden kann. Bestätigen Sie dann, ob die Anwendung andere Arten von Protokollen generieren kann. Wenn die Anwendung ausgeführt wird und Protokolle generiert werden, überprüfen Sie die Fluent-Bit-Pod-Protokolle, um festzustellen, ob bestimmte Fehler an CloudWatch gesendet werden.

Fluent-Bit-Pods stecken im CreateContainerConfigError-Status fest

Führen Sie den folgenden Befehl aus, um die genaue Fehlermeldung zu erhalten:

kubectl describe pod pod_name -n amazon-cloudwatch

Suchen Sie in der Befehlsausgabe im Abschnitt Ereignisse nach einer Fehlermeldung wie der folgenden:

Error syncing pod ("fluent-bit-xxxxxxx"), skipping: failed to "StartContainer" with CreateContainerConfigError: "configmap \"fluent-bit-config\" not found"

Wenn Sie die vorherige Fehlermeldung sehen, fehlt die ConfigMap für Fluent Bit (fluent-bit-config). Wiederholen Sie Schritt 4 im Abschnitt Container Insights mit Fluent Bit einrichten in diesem Artikel.

Ähnliche Informationen

Den CloudWatch-Agenten für die Erfassung von Cluster-Metriken einrichten

Schnellstart mit dem CloudWatch-Agenten und Fluent Bit

Die Debug-Protokollierung aktivieren auf der GitHub Website

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 7 Monaten