Wie behebe ich Setup-Probleme, wenn ich Fluent Bit mit Container Insights für Amazon EKS integriere?
Ich möchte Setup-Probleme beheben, wenn ich Fluent Bit mit Container Insights for Amazon Elastic Kubernetes Service (Amazon EKS) integriere.
Kurzbeschreibung
Fluent Bit ist ein schlanker Protokollprozessor und Forwarder, mit dem Sie Container-Protokolle in Amazon CloudWatch sammeln.
Aufgrund des geringen Ressourcenverbrauchs und der Use_Kubelet-Funktion ist es eine bewährte Methode, Fluent Bit anstelle von Fluentd (einem älteren Open-Source-Programm) zu verwenden. Weitere Informationen finden Sie unter Funktion Use_Kubelet für große Cluster aktivieren.
Damit Fluent Bit Container-Protokolle an Amazon CloudWatch Logs senden kann, müssen Sie Fluent Bit AWS-Identity-and-Access-Management-Berechtigungen (IAM) gewähren. Mit Amazon EKS gibt es zwei Möglichkeiten, IAM-Berechtigungen zu gewähren:
- Hängen Sie der IAM-Rolle Ihrer Worker-Knoten eine Richtlinie an.
- Verwenden Sie eine IAM-Servicekontorolle.
Wenn Sie Fluent Bit IAM-Berechtigungen gewähren, kann Fluent Bit die folgenden Aktionen ausführen:
- logs:DescribeLogGroups
- logs:DescribeLogStreams
- logs:CreateLogGroup
- logs:CreateLogStream
- logs:PutLogEvents
Zu den häufigsten Problemen gehören:
- Fluent-Bit-Pods stürzen ab.
- Fluent Bit sendet keine Protokolle an CloudWatch.
- Fluent Bit-Pods geben CreateContainerConfigError zurück.
Lösung
IAM-Rolle für ein Servicekonto einrichten
Erstellen Sie eine IAM-Rolle für das Cloudwatch-Agent-Servicekonto für den Amazon-Cloudwatch-Namespace mit der von AWS verwalteten Richtlinie CloudWatchAgentServerPolicy.
1. Führen Sie die folgenden Befehle aus, um Umgebungsvariablen einzurichten:
export CLUSTER="clustername" export AWS_REGION="awsregion" export AWS_ACCOUNT="awsaccountid"
Hinweis: Ersetzen Sie „clustername“,„awsregion“ und „awsaccountid“ (einschließlich der Anführungszeichen) durch Ihren eigenen Clusternamen, Ihre AWS-Region und Ihre Konto-ID.
2. Führen Sie den folgenden eksctl-Befehl aus:
eksctl create iamserviceaccount \ --name cloudwatch-agent \ --namespace amazon-cloudwatch \ --cluster $CLUSTER \ --attach-policy-arn "arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy" \ --approve \ --override-existing-serviceaccounts
Weitere Informationen zu den Voraussetzungen für Container Insights finden Sie unter Voraussetzungen überprüfen.
CloudWatch-Agenten einrichten, um Cluster-Metriken zu sammeln, und Container Insights aktivieren
1. Führen Sie den folgenden Befehl aus, um Container Insights mithilfe des Schnellstarts bereitzustellen:
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.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“ (einschließlich der Anführungszeichen) durch Ihren eigenen Clusternamen und Ihre AWS-Region.
Der vorherige Befehl erstellt einen Namespace, ClusterRole, ClusterRoleBinding und ConfigMap für den CloudWatch-Agenten und Fluent Bit.
2. Führen Sie nach der Ausführung dieses Befehls den folgenden Befehl aus, um das Fluent-Bit-Servicekonto 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
3. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der CloudWatch-Agent die Bereitstellung durchführt:
kubectl get pods -n amazon-cloudwatch
4. Wenn der Vorgang abgeschlossen ist, erstellt der CloudWatch-Agent die Protokollgruppe /aws/containerinsights/Cluster_Name/Performance. Anschließend sendet der CloudWatch-Agent die Leistungsprotokollereignisse an die Protokollgruppe.
Fehlerbehebung
Fluent-Bit-Pods stürzen ab
1. Suchen Sie in den Fluent-Bit-Pod-Protokollen nach Fehlermeldungen. Führen Sie diese Befehle aus, um nach Ereignissen in Fluent-Bit-Pods zu suchen:
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 (die in ConfigMap gespeicherte Fluent-Bit-Konfigurationsdatei) korrekt ist und keine Syntaxfehler enthält. Stellen Sie sicher, dass alle Clusternamen und Regionswerte festgelegt sind. Weitere Informationen finden Sie unter amazon-cloudwatch-container-insights auf der GitHub-Website.
Fluent Bit sendet keine Protokolle an CloudWatch
1. Stellen Sie sicher, dass das Ausgabe-Plugin in der Fluent-Bit-Konfigurationsdatei ordnungsgemäß eingerichtet ist. Verwenden Sie den folgenden Befehl, um zu überprüfen, ob Fehler beim Versand von Daten vorliegen, um die Fluent-Bit-Pod-Protokolle zu überprüfen:
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 Protokolle an CloudWatch zu streamen. Ihre Amazon-EKS-Worker-Knoten senden aufgrund der von IAM durchgesetzten CloudWatchAgentServerPolicy-Metriken und -Protokolle an CloudWatch. Es gibt zwei Möglichkeiten, die erforderlichen IAM-Berechtigungen zu gewähren:
- Fügen Sie den IAM-Rollen der Worker-Knoten eine Richtlinie hinzu.
- Erstellen Sie eine IAM-Rolle für die Servicekonten des Clusters und fügen Sie ihr die Richtlinie hinzu.
Weitere Informationen finden Sie im Abschnitt Einrichten einer IAM-Rolle für ein Servicekonto.
Fluent-Bit-Pods stecken in CreateContainerConfigError fest
Wenn der Pod-Status CreateContainerConfigError lautet, 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 CreateContain erConfigError: "configmap \"fluent-bit-config\" not found"
Wenn Sie diese Fehlermeldung sehen, haben Sie wahrscheinlich die ConfigMap für Fluent Bit (fluent-bit-config) nicht erstellt. Folgen Sie erneut den Installationsschritten, um sicherzugehen, dass Sie die ConfigMap erstellen.
Ähnliche Informationen
CloudWatch-Agenten einrichten, um Cluster-Metriken zu sammeln
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 10 Monaten