View a markdown version of this page

Alarmieren in Protokollen - 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.

Alarmieren in Protokollen

Sie können CloudWatch Alarme erstellen, die Ihre Protokolldaten auf zwei Arten überwachen:

  • Log Alarm-Ansatz — Erstellen Sie einen Log Alarm, der eine CloudWatch Logs Insights-Abfrage nach einem Zeitplan ausführt und die aggregierten Ergebnisse direkt anhand eines Schwellenwerts auswertet.

  • Metrikfilter-Ansatz — Erstellen Sie einen Metrikfilter für eine Protokollgruppe und anschließend einen Standard-Metrikalarm für die resultierende Metrik.

Erstellen Sie einen Log-Alarm

Erstellen Sie einen Log-Alarm

Sie können einen CloudWatch Alarm erstellen, der eine CloudWatch Logs Insights-Abfrage verwendet, um Protokolldaten direkt zu überwachen. Die Abfrage wird nach einem Zeitplan mit einer geplanten Abfrage ausgeführt, und der Alarm wertet die aggregierten Ergebnisse anhand eines Schwellenwerts aus. Weitere Informationen zur Funktionsweise von Protokollalarmen finden Sie unter. Alarme protokollieren

Voraussetzungen

Bevor Sie einen Log Alarm erstellen, müssen Sie eine IAM-Rolle erstellen, die CloudWatch Logs die Berechtigung erteilt, die geplante Abfrage auszuführen. Wenn Sie möchten, dass auch Protokollzeilen in Amazon SNS SNS-Benachrichtigungen enthalten sind, müssen Sie eine zweite Rolle erstellen.

Anmerkung

Wenn Sie von der CloudWatch Konsole aus einen Log Alarm erstellen, hilft Ihnen die Konsole bei der Erstellung dieser Rollen.

Rolle „Geplante Abfrageausführung“

Mit der Rolle „Geplante Abfrageausführung“ kann CloudWatch Logs die Abfrage in Ihrem Namen ausführen. Diese Rolle ist für alle Protokollalarme erforderlich, um die geplante Abfrage auszuführen. Die Rolle muss dem logs.amazonaws.com Dienstprinzipal vertrauen.

Das folgende Beispiel zeigt die Vertrauensrichtlinie für die Rolle zur geplanten Abfrageausführung.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Das folgende Beispiel zeigt die Berechtigungsrichtlinie. Ordnen Sie Resource die ARNs der Protokollgruppe zu, auf die die Abfrage abzielt.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:StartQuery", "logs:StopQuery", "logs:GetQueryResults", "logs:DescribeLogGroups" ], "Resource": "arn:aws:logs:region:account-id:log-group:your-log-group:*" } ] }

Rolle „Protokollzeilen“ (optional)

Die Rolle „Protokollzeilen“ ermöglicht CloudWatch das Abrufen von Protokollzeilen für Amazon SNS SNS-E-Mail-Benachrichtigungen. Diese Rolle ist nur erforderlich, wenn Sie einen Wert größer als 0 angeben. ActionLogLineCount Die Rolle muss dem cloudwatch.amazonaws.com Dienstprinzipal vertrauen.

Das folgende Beispiel zeigt die Vertrauensrichtlinie für die Rolle „Loglines“.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudwatch.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Das folgende Beispiel zeigt die Berechtigungsrichtlinie für die Rolle „Log Lines“. Die logs:GetQueryResults Berechtigung ist erforderlich, um Protokollzeilen abzurufen. Ordnen Sie die ARNs der Protokollgruppe Resource zu, auf die die Abfrage abzielt.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:GetQueryResults" ], "Resource": "arn:aws:logs:region:account-id:log-group:your-log-group:*" } ] }
Anmerkung

Um die Ergebnisse der Log Alarm-Abfrage in der CloudWatch Konsole anzuzeigen, muss der IAM-Benutzer oder die IAM-Rolle, die auf die Konsole zugreift, über die logs:GetScheduledQueryData entsprechende Berechtigung verfügen. Diese API ist nur für Konsolen verfügbar und nicht über das SDK oder das AWS CLI SDK verfügbar. CloudTrailprotokolliert diese API als Datenereignis. Sie müssen daher einen Trail mit Datenereignisprotokollierung konfigurieren, um das Ereignis zu erfassen.

Einen Log-Alarm mithilfe der Konsole erstellen

In den Schritten in diesem Abschnitt wird erklärt, wie Sie mit der CloudWatch Konsole einen Log Alarm erstellen. Sie können den auch verwenden AWS CLI , um einen Protokollalarm zu erstellen. Weitere Informationen finden Sie unter Erstellen eines Log-Alarms mit dem AWS CLI.

Um einen Log-Alarm zu erstellen
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Klicken Sie im Navigationsbereich auf Alarms (Alarme).

  3. Wählen Sie Create Alarm (Alarm erstellen) aus.

  4. Wählen Sie als Datenquelle die Option Logs aus.

  5. Unter Logs Query:

    1. Wählen Sie in Log Analytics die Option Abfrage erstellen aus. Dadurch wird die Log Analytics-Seite geöffnet, auf der Sie Ihre Abfrage erstellen.

    2. Schreiben Sie auf der Log Analytics-Seite Ihre Anfrage. Wenn Sie fertig sind, klicken Sie oben rechts auf Weiter zu Alarmen, um zur Alarmkonsole zurückzukehren.

    3. Geben Sie unter Aggregationsausdruck an, wie die Abfrageergebnisse aggregiert werden sollen, um einen numerischen Wert für die Alarmauswertung zurückzugeben (z. B. count(*) oderavg(latency) by endpoint).

  6. Unter Alarmbedingungen:

    1. Für immer dann, wenn das aggregierte Ergebnis... , wählen Sie einen Vergleichsoperator.

    2. Für als... , geben Sie den Schwellenwert ein.

    3. (Optional) Unter Zusätzliche Konfiguration:

      1. Ändern Sie „Datenpunkte“ in „Alarm“, um die Anzahl der Verstoßergebnisse anzugeben, die erforderlich sind, um die letzten N ALARM Abfragen auszulösen.

      2. Ändern Sie „Behandlung fehlender Daten“, um anzugeben, wie mit fehlenden Daten umgegangen werden soll.

  7. Unter Zeitplan:

    1. Wählen Sie unter Evaluierungshäufigkeit aus, wie oft die Abfrage ausgeführt wird (z. B. alle 5 Minuten).

    2. Bei Startzeit-Offset handelt es sich um das Lookback-Fenster für jede Abfrageausführung.

    3. Bei Endzeitversatz (optional) das Ende des Abfragezeitbereichs als Offset in Sekunden von der aktuellen Uhrzeit.

  8. Mit IAM-Genehmigung:

    1. Geben Sie die Rolle an, die für die Ausführung der geplanten Abfrage erforderlich ist. Sie können entweder eine neue Rolle erstellen oder eine vorhandene Rolle verwenden.

  9. Wählen Sie Weiter aus.

  10. Konfigurieren Sie unter Aktionen konfigurieren die Aktionen und Benachrichtigungen nach Bedarf.

    1. Um Protokollzeilen, die den Alarmübergang auslösen, in Amazon SNS SNS-E-Mail-Benachrichtigungen einzubeziehen, gehen Sie unter Abfrageergebnisse in die Aktionen einbeziehen wie folgt vor:

      1. Fügen Sie Anzahl der Abfrageergebnisse hinzu, um die Anzahl der einzuschließenden Protokollzeilen anzugeben.

      2. Erstellen Sie eine vorhandene Rolle, die zum Abrufen der erforderlichen Abfrageergebnisse verwendet wird, oder wählen Sie eine vorhandene Rolle aus.

  11. Wählen Sie Weiter aus.

  12. Geben Sie einen Namen und optional eine Beschreibung ein (unterstützt Markdown).

  13. (Optional) Fügen Sie Tags hinzu.

  14. Wählen Sie Weiter aus.

  15. Überprüfen Sie unter Vorschau und Erstellung Ihre Konfiguration und wählen Sie dann Alarm erstellen aus.

Erstellen eines Log-Alarms mit dem AWS CLI

Sie können den AWS CLI put-log-alarm Befehl verwenden, um einen Protokollalarm zu erstellen.

Im folgenden Beispiel wird ein Protokollalarm erstellt, der die Anzahl der Fehler in einer Protokollgruppe überwacht und in den ALARM Status übergeht, wenn die Anzahl bei 3 von 5 Abfrageausführungen 100 überschreitet.

aws cloudwatch put-log-alarm \ --alarm-name "HighErrorCount" \ --alarm-description "Alarm when error count exceeds 100" \ --comparison-operator GreaterThanThreshold \ --threshold 100 \ --query-results-to-evaluate 5 \ --query-results-to-alarm 3 \ --treat-missing-data missing \ --alarm-actions "arn:aws:sns:region:account-id:topic-name" \ --scheduled-query-configuration '{ "QueryString": "fields @timestamp, @message | filter @message like /ERROR/", "LogGroupIdentifiers": ["/aws/lambda/my-function"], "ScheduledQueryRoleARN": "arn:aws:iam::account-id:role/ScheduledQueryRole", "AggregationExpression": "count(*)", "ScheduleConfiguration": { "ScheduleExpression": "rate(10 minutes)", "StartTimeOffset": 600 } }' \ --action-log-line-count 5 \ --action-log-line-role-arn "arn:aws:iam::account-id:role/LogLineRole"

In der folgenden Tabelle werden die wichtigsten Parameter für den put-log-alarm Befehl beschrieben.

Put-Log-Alarm-Parameter
Parameter Erforderlich Beschreibung
--alarm-name Ja Der Name des Alarms. Darf nur Zeichen enthalten. UTF-8
--comparison-operator Ja Der Vergleichsoperator für die Schwellenwertauswertung. Zulässige Werte: GreaterThanThreshold, GreaterThanOrEqualToThreshold, LessThanThreshold, LessThanOrEqualToThreshold.
--threshold Ja Der numerische Schwellenwert, mit dem verglichen werden soll.
--query-results-to-evaluate Ja Die Anzahl der letzten auszuwertenden Abfrageausführungen (N in M-out-of-N).
--query-results-to-alarm Ja Die Anzahl der Ergebnisse eines Sicherheitsverstoßes, die ausgelöst werden müssen ALARM (M in M-out-of-N).
--treat-missing-data Nein Wie behandelt man fehlende Daten? Gültige Werte: missing (Standard),notBreaching,breaching,ignore.
--scheduled-query-configuration Ja Die Abfragekonfiguration, einschließlich Abfragezeichenfolge, Protokollgruppen-Identifikatoren, ARN für geplante Abfragerollen, Aggregationsausdruck und Zeitplankonfiguration.
--action-log-line-count Nein Die Anzahl der Protokollzeilen, die in Amazon SNS SNS-E-Mail-Benachrichtigungen enthalten sein sollen (0—50). Standard = 0.
--action-log-line-role-arn Nein Der ARN der IAM-Rolle, der vertrautcloudwatch.amazonaws.com. Erforderlich, wenn action-log-line-count der Wert größer als 0 ist.

Einen Log-Alarm erstellen mit AWS CloudFormation

Sie können den AWS::CloudWatch::LogAlarm Ressourcentyp verwenden, um einen Log Alarm in einer AWS CloudFormation Vorlage zu erstellen.

Die folgende Beispielvorlage erstellt einen Log Alarm, der die Anzahl der Fehler überwacht.

AWSTemplateFormatVersion: '2010-09-09' Resources: HighErrorCountAlarm: Type: AWS::CloudWatch::LogAlarm Properties: AlarmName: HighErrorCount AlarmDescription: Alarm when error count exceeds 100 ComparisonOperator: GreaterThanThreshold Threshold: 100 QueryResultsToEvaluate: 5 QueryResultsToAlarm: 3 TreatMissingData: missing ActionLogLineCount: 5 ActionLogLineRoleArn: !GetAtt LogLineRole.Arn ScheduledQueryConfiguration: QueryString: "fields @timestamp, @message | filter @message like /ERROR/" LogGroupIdentifiers: - /aws/lambda/my-function ScheduledQueryRoleARN: !GetAtt ScheduledQueryRole.Arn AggregationExpression: "count(*)" ScheduleConfiguration: ScheduleExpression: "rate(10 minutes)" StartTimeOffset: 600 AlarmActions: - !Ref AlarmSNSTopic

Erstellen Sie einen CloudWatch Alarm auf der Grundlage eines Metrikfilters für Protokollgruppen

Das Verfahren in diesem Abschnitt beschreibt, wie ein Alarm basierend auf einem Protokollgruppen-Metrikfilter erstellt wird. Mit metrischen Filtern können Sie in Protokolldaten, an die die Daten gesendet werden, nach Begriffen und Mustern suchen. CloudWatch Weitere Informationen finden Sie unter Metriken aus Protokollereignissen mithilfe von Filtern erstellen im Amazon CloudWatch Logs-Benutzerhandbuch. Bevor Sie einen Alarm auf der Grundlage eines Protokollgruppen-Metrikfilters erstellen, müssen Sie die folgenden Aktionen ausführen:

Erstellen eines Alarms basierend auf einem Protokollgruppen-Metrikfilter
  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie ausgehend vom Navigationsbereich Logs (Protokolle) und dann Log groups (Protokollgruppen) aus.

  3. Wählen Sie die Protokollgruppe aus, die Ihren Metrikfilter enthält.

  4. Wählen Sie Metric filters (Metrikfilter) aus.

  5. Wählen Sie in der Registerkarte „Metric filters“ (Metrikfilter) das Feld für den Metrikfilter aus, auf dem Ihr Alarm basieren soll.

  6. Wählen Sie Alarm erstellen aus.

  7. (Optional) Unter Metric (Metrik) können Sie Metric name (Metrikname), Statistic (Statistik) und Period (Zeitraum) bearbeiten.

  8. Geben Sie unter Conditions (Bedingungen) Folgendes an:

    1. Wählen Sie als Threshold type (Schwellenwerttyp) die Option Static (Statisch) oder Anomaly detection (Anomalieerkennung) aus.

    2. Für wann immer your-metric-name es ist. , wählen Sie Größer Greater/Equal, Lower/Equal, oder Niedriger.

    3. Für than . . . (als . . .) geben Sie eine Zahl für Ihren Schwellenwert an.

  9. Wählen Sie Additional configuration (Zusätzliche Konfiguration).

    1. Geben Sie für Data points to Alarm (Datenpunkte für den Alarm) an, wie viele Datenpunkte Ihren Alarm dazu bringen, in den ALARM-Status überzugehen. Wenn Sie übereinstimmende Werte angeben, wechselt Ihr Alarm in den Status ALARM, wenn entsprechend viele aufeinanderfolgende Zeiträume überschritten werden. Um einen M-out-of-N Alarm zu erstellen, geben Sie für den ersten Wert eine Zahl ein, die niedriger ist als die Zahl, die Sie für den zweiten Wert angeben. Weitere Informationen finden Sie unter Auswertung von Alarmen.

    2. Wählen Sie für Missing data treatment (Behandlung fehlender Daten) eine Option aus, um anzugeben, wie bei der Bewertung Ihres Alarms fehlende Daten zu behandeln sind.

  10. Wählen Sie Weiter aus.

  11. Legen Sie für Notification (Benachrichtigung) ein Amazon-SNS-Thema fest, das benachrichtigen soll, wenn sich der Alarm im Status ALARM, OK oder INSUFFICIENT_DATA befindet.

    1. (Optional) Um mehrere Benachrichtigungen für den gleichen Alarmstatus oder für verschiedene Statuswerte zu senden, wählen Sie Add notification (Benachrichtigung hinzufügen) aus.

    2. (Optional) Damit keine Benachrichtigungen gesendet werden, wählen Sie Remove (Entfernen) aus.

  12. Um den Alarm Auto-Scaling-, EC2-, Lambda- oder Systems-Manager-Aktionen ausführen zu lassen, wählen Sie die entsprechende Schaltfläche und wählen Sie den Alarmstatus und die auszuführende Aktion. Wenn Sie eine Lambda-Funktion als Alarmaktion wählen, geben Sie den Funktionsnamen oder ARN an, und Sie können optional eine bestimmte Version der Funktion auswählen.

    Alarme können Aktionen des Systems Manager nur ausführen, wenn sie in den ALARM-Zustand wechseln. Weitere Informationen zu Systems Manager Manager-Aktionen finden Sie unter Konfiguration für CloudWatch die Erstellung OpsItems aus Alarmen und Incident-Erstellung.

    Anmerkung

    Um einen Alarm zu erstellen, der eine SSM-Incident-Manager-Aktion ausführt, müssen Sie über bestimmte Berechtigungen verfügen. Weitere Informationen finden Sie unter Identity-based Richtlinienbeispielen für AWS Systems Manager Incident Manager.

  13. Wählen Sie Weiter aus.

  14. Geben Sie unter Name und Beschreibung einen Namen und eine Beschreibung für Ihren Alarm ein. Der Name darf nur UTF-8 Zeichen enthalten und darf keine ASCII-Steuerzeichen enthalten. Die Beschreibung kann Markdown-Formatierungen enthalten, die nur auf der Registerkarte Alarmdetails in der Konsole angezeigt werden. CloudWatch Der Markdown kann nützlich sein, um Links zu Runbooks oder anderen internen Ressourcen hinzuzufügen.

  15. Vergewissern Sie sich für Preview and create (Vorschau anzeigen und erstellen), ob Ihre Konfiguration korrekt ist, und wählen Sie Create alarm (Alarm erstellen) aus.