Warum sendet mein vereinheitlichter CloudWatch-Agent keine Protokollereignisse?
Mein vereinheitlichter Amazon-CloudWatch-Agent sendet keine Protokollereignisse, und ich möchte dieses Problem lösen.
Lösung
Die folgende Lösung gilt nicht für CloudWatch Container Insights. Informationen zur Problembehandlung bei CloudWatch Container Insights findest du unter Problembehandlung bei Container Insights.
Nicht synchronisierte Metadaten
Nicht synchronisierte Metadaten können zu Problemen mit dem CloudWatch-Agent führen.
Gehe wie folgt vor, um dieses Problem zu beheben:
- Bevor du den CloudWatch-Agent installierst, erstelle ein Amazon Machine Image (AMI), um eindeutige Informationen aus der ursprünglichen Instance zu erfassen.
- Verwende AWS CloudFormation, AWS Systems Manager, Benutzerdatenskripts oder die Befehlszeile, um den CloudWatch-Agent beim Start zu installieren.
- Verwende Sysprep für Windows-Instances, wenn du mit einem AMI arbeitest.
Verwendung einer veralteten Version des CloudWatch-Agent
Überprüfe die Version des CloudWatch-Agent, den du gerade verwendest. Wenn der CloudWatch-Agent veraltet ist, lade das CloudWatch-Agent-Paket mit der neuesten Version herunter und installiere es. Die neueste Version enthält möglicherweise Updates, die dein Problem beheben.
Es konnte keine Verbindung zum CloudWatch-Logs-Endpunkt hergestellt werden
Hinweis: Ersetze in den folgenden Befehlen example-region durch deine AWS-Region.
Führe einen der folgenden Befehle aus, um die Verbindung zum CloudWatch-Logs-Endpunkt zu testen:
telnet logs.example-region.amazonaws.com 443
nc -zv logs.example-region.amazonaws.com 443
Standardmäßig ist netcat nicht für Windows-Computer installiert. Führe stattdessen den folgenden Test-NetConnection-Befehl in Windows PowerShell aus:
Test-NetConnection -ComputerName logs.example-region.amazonaws.com -Port 443
Wenn die Verbindung fehlschlägt, ergreife die folgenden Maßnahmen:
- Stelle sicher, dass die Sicherheitsgruppe und die Netzwerk-Zugriffssteuerungslisten (Netzwerk-ACLs) die Verbindung zulassen.
- Verwende für öffentliche Endpunkte ein Internet-Gateway oder ein NAT-Gateway für deine Instance.
- Wenn du Amazon Virtual Private Cloud (Amazon VPC)-Endpunkte verwendest, stelle sicher, dass der Endpunkt in eine Amazon VPC-IP-Adresse aufgelöst wird. Stelle außerdem sicher, dass die Endpunkt-Sicherheitsgruppe den Zugriff von der Quell-Instance aus zulässt.
Falsche Konto-, Regions- oder Protokollgruppenkonfigurationen
Stelle für die CloudWatch-Agent-Konfigurationsdatei sicher, dass die angegebene Region mit der Konsolenregion übereinstimmt. Stelle außerdem sicher, dass du die Protokolle im richtigen AWS-Konto überprüfst.
Verwende die folgenden common-config.toml-Dateispeicherorte, um die Systemstandardwerte für den CloudWatch-Agent zu überschreiben.
Linux:
/opt/aws/amazon-cloudwatch-agent/etc/common-config.toml
/etc/amazon/amazon-cloudwatch-agent/common-config.toml
Windows:
$Env:ProgramData\Amazon\AmazonCloudWatchAgent\common-config.toml
Unzureichende IAM-Berechtigungen
Um Protokollereignisse an CloudWatch zu senden, verwendet der CloudWatch-Agent Anmeldeinformationen entweder aus der Richtlinie für AWS Identity and Access Management (IAM)-Benutzer oder IAM-Rollen.
Stelle sicher, dass deine identitätsbasierte Richtlinie die folgenden IAM-Berechtigungen umfasst:
- logs:CreateLogGroup
- logs:CreateLogStream
- logs:PutLogEvents
- logs:DescribeLogStreams
Füge fehlende IAM-Berechtigungen zur Benutzerrichtlinie oder Rollenrichtlinie hinzu.
Wenn du die IAM-Rolle oder den/die IAM-Benutzer:in erstellst, empfiehlt es sich, die Richtlinie CloudWatchAgentServerPolicy oder CloudWatchAgentAdminPolicy zu verwenden.
Wenn es keine Protokollgruppe oder keinen Protokollstream gibt, erstellt der CloudWatch-Agent sie. Bevor du ein Protokollereignis veröffentlichst, erstelle eine Protokollgruppe und einen Protokollstream.
Fehler beim Ausführen des CloudWatch-Agent
Stelle sicher, dass der CloudWatch-Agent ausgeführt wird. Wenn der Agent nicht ausgeführt wird, überprüfe den Speicherort der Protokolldatei auf Fehler.
Für Linux ist der Speicherort der Protokolldatei /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log.
Für Windows ist der Speicherort der Protokolldatei $Env:ProgramData\Amazon\AmazonCloudWatchAgent\Logs\amazon-cloudwatch-agent.log.
Möglicherweise hast du Protokolle an einem benutzerdefinierten logfile-Speicherort angegeben. Überprüfe die Agent-Konfigurationsdatei, um benutzerdefinierte Protokollspeicherorte zu identifizieren.
Verwende den debug-Parameter, um die ausführliche Debug-Protokollierung in der Konfigurationsdatei zu aktivieren. Wenn du den Parameter run_as_user verwendest, überprüfe, ob der/die Benutzer:in über Berechtigungen für den Protokollspeicherort verfügt. Wenn der/die Benutzer:in nicht über die erforderlichen Berechtigungen verfügt, kann CloudWatch keine Protokolle an den Standort schreiben.
Wenn beim Starten des CloudWatch-Agent Probleme mit dem International Material Data System (IMDS) auftreten, gehe wie folgt vor:
- Vergewissere dich, dass du auf die Metadaten für die Amazon Elastic Compute Cloud (Amazon EC2)-Instance zugreifen kannst. Überprüfe die Verbindung zum Metadaten-Endpunkt.
- Prüfe in Routen und Firewalls auf Betriebssystemebene, ob du Regeln erstellt hast, die die Konnektivität zum Metadaten-Endpunkt blockieren. Weitere Informationen für Linux findest du unter Wie kann ich Probleme mit Instance-Metadaten auf meiner EC2-Linux-Instance beheben? Weitere Informationen für Windows findest du unter Wie behebe ich den Fehler „Waiting for the metadata service“ auf meiner Amazon-EC2-Windows-Instance?
Probleme mit dem Zeitstempel
Der CloudWatch-Agent verwendet den PutLogEvents-API-Vorgang, um Protokollereignisse in CloudWatch-Protokollgruppen zu veröffentlichen. Stelle sicher, dass die Protokollereignisse die Einschränkungen des PutLogEvents-API-Vorgangs erfüllen. Stelle außerdem sicher, dass du die Zeitzone der Instance richtig konfiguriert hast.
Falscher Wert in der Statusdatei für das Protokoll
Gehe wie folgt vor, um einen fehlenden oder falschen Wert in der Statusdatei für das Protokoll zu beheben:
-
Vergewissere dich, dass sich die Statusdateien am richtigen Speicherort befinden.<br id=hardline_break/> Verwende für Linux den folgenden Dateispeicherort:<br id=hardline_break/> /opt/aws/amazon-cloudwatch-agent/logs/state<br id=hardline_break/> Verwende für Windows den folgenden Dateispeicherort:<br id=hardline_break/> C:\ProgramData\Amazon\AmazonCloudWatchAgent\Logs\state<br id=hardline_break/> Hinweis: Stelle sicher, dass die vorherigen Statusdateien den gleichen Größenwert wie die Protokolldatei enthalten, damit der CloudWatch-Agent neue Daten lesen und in CloudWatch-Protokollgruppen veröffentlichen kann.
-
Überprüfe den Größenwert der Statusdatei.<br id=hardline_break/> Führe unter Linux den folgenden sudo-Befehl aus:
sudo cat /opt/aws/amazon-cloudwatch-agent/logs/state/_var_log_httpd_access_logFühre unter Windows den folgenden Windows-PowerShell-Befehl aus:
gc 'C:\ProgramData\Amazon\AmazonCloudWatchAgent\Logs\state\C__Program_Files_log.log'Hinweis: Die Ausgabe der vorherigen Befehle enthält einen numerischen Wert des aktuellen Offsets. Wenn die Ausgabe beispielsweise 34 ist, liegt der aktuelle Offset beim 34. Byte der Protokolldatei. CloudWatch Logs werden am identifizierten Byte gelesen, wenn der CloudWatch-Agent neue Protokolle in die Protokolldatei schreibt.
-
Überprüfe den Größenwert der Protokolldatei.<br id=hardline_break/> Führe unter Linux den folgenden Befehl aus:
stat /var/log/httpd/access_log | grep Size | awk '{print $2}'Führe unter Windows den folgenden Befehl aus:
Get-Item 'C:\Program Files\log.log' | Format-List | findstr Length -
Vergewissere dich, dass du die gleichen Ausgaben aus den Schritten 2 und 3 erhältst.
Falsche Konfiguration der Quellprotokolldatei
Gehe wie folgt vor, um Probleme aufgrund einer falschen Konfiguration der Quellprotokolldatei zu beheben:
- Prüfe, ob die CloudWatch-Agent-Konfiguration die Protokolldatei enthält, die du überwachen möchtest.
- Stelle sicher, dass die Protokolldatei das richtige Dateiformat hat und dass du die richtigen Namen und Speicherorte verwendet hast.
- Überprüfe in der aktuellen Konfiguration, ob du die Protokolle so konfiguriert hast, dass sie an dieselbe Protokollgruppe und denselben Protokollstream gesendet werden, aus denen du Daten abrufen möchtest.
- Überprüfe die Protokolldatei, die du auf deiner Instance überwachst. Vergewissere dich, dass die Quellprotokolldatei die Daten enthält, die du in der Protokollgruppe veröffentlichen möchtest.
Hoher Wert für force_flush_interval
Wenn die Protokollgröße den maximalen Puffer von 1 MB erreicht, empfängt CloudWatch die Protokolle sofort, unabhängig vom von dir festgelegten force_flush_interval-Intervall. Für weitere Informationen wähle die Registerkarte CloudWatch agent configuration file: Metrics section (CloudWatch-Agent-Konfigurationsdatei: Metrik-Bereich) aus.
Wenn du das Intervall auf einen hohen Wert setzt und die Protokollgröße 1 MB nicht erreicht, bleiben die Protokolle im Puffer. Der CloudWatch-Agent sendet Protokolle erst an den Server, wenn der Puffer voll ist oder das Intervall abgelaufen ist. Während dieses Intervalls sind die Protokolle in CloudWatch nicht verfügbar. Stelle sicher, dass du den Intervallwert auf die richtige Größe eingestellt hast. Es hat sich bewährt, den Intervallwert auf der Grundlage der Protokollgröße und der Intervalle festzulegen, in denen du sie veröffentlichen möchtest.
Ähnliche Informationen
Problembehandlung beim CloudWatch Agent
Wie behebe ich Probleme mit dem Pod-Status in Amazon Elastic Kubernetes Service (Amazon EKS)?
- Sprache
- Deutsch
