Direkt zum Inhalt

Warum sendet mein vereinheitlichter CloudWatch-Agent keine Protokollereignisse?

Lesedauer: 6 Minute
0

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:

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:

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:

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

  2. Ü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_log

    Fü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.

  3. Ü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
  4. 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)?