

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.

# Protokollierung und Überwachung in Amazon Managed Service für Apache Flink
<a name="monitoring-overview"></a>

Die Überwachung ist wichtig, um Zuverlässigkeit, Verfügbarkeit und Leistung Ihrer Managed Service für Apache Flink-Anwendungen aufrechtzuerhalten. Sie sollten Überwachungsdaten aus allen Teilen Ihrer AWS Lösung sammeln, damit Sie einen etwaigen Mehrpunktfehler leichter debuggen können. 

Bevor Sie mit der Überwachung von Managed Service für Apache Flink beginnen, sollten Sie einen Überwachungsplan mit Antworten auf die folgenden Fragen erstellen:
+ Was sind Ihre Ziele bei der Überwachung?
+ Welche Ressourcen werden überwacht?
+ Wie oft werden diese Ressourcen überwacht?
+ Welche Überwachungstools werden verwendet?
+ Wer soll die Überwachungsaufgaben ausführen?
+ Wer soll benachrichtigt werden, wenn Fehler auftreten?

Der nächste Schritt besteht darin, eine Baseline für normale Managed Service für Apache Flink-Performance in Ihrer Umgebung aufzustellen. Dies geschieht, indem Sie die Leistung zu verschiedenen Zeiten und unter verschiedenen Lastbedingungen messen. Sie können bei der Überwachung von Managed Service für Apache Flink historische Überwachungsdaten speichern. Sie können diese dann mit aktuellen Leistungsdaten vergleichen, normale Leistungsmuster und Leistungsanomalien identifizieren sowie Verfahren für den Umgang mit Problemen entwickeln.

**Topics**
+ [Anmeldung bei Managed Service für Apache Flink](logging.md)
+ [Überwachung im Managed Service für Apache Flink](monitoring.md)
+ [Anwendungsprotokollierung in Managed Service für Apache Flink einrichten](cloudwatch-logs.md)
+ [Analysieren Sie Logs mit CloudWatch Logs Insights](cloudwatch-logs-reading.md)
+ [Metriken und Dimensionen in Managed Service für Apache Flink](metrics-dimensions.md)
+ [Schreiben Sie benutzerdefinierte Nachrichten in CloudWatch Logs](cloudwatch-logs-writing.md)
+ [Log Managed Service für Apache Flink API-Aufrufe mit AWS CloudTrail](logging-using-cloudtrail.md)

# Anmeldung bei Managed Service für Apache Flink
<a name="logging"></a>

Die Protokollierung ist wichtig für Produktionsanwendungen, um Fehler und Ausfälle zu verstehen. Das Logging-Subsystem muss jedoch Protokolleinträge sammeln und an Logs weiterleiten. Ein gewisses CloudWatch Logging ist zwar in Ordnung und wünschenswert, aber eine umfangreiche Protokollierung kann den Dienst überlasten und dazu führen, dass die Flink-Anwendung ins Hintertreffen gerät. Das Protokollieren von Ausnahmen und Warnungen ist sicherlich eine gute Idee. Sie können jedoch nicht für jede einzelne Nachricht, die von der Flink-Anwendung verarbeitet wird, eine Protokollnachricht generieren. Flink ist für hohen Durchsatz und geringe Latenz optimiert, das Protokollierungs-Subsystem nicht. Falls es wirklich erforderlich ist, für jede verarbeitete Nachricht eine Protokollausgabe zu generieren, verwenden Sie eine zusätzliche Ausgabe DataStream innerhalb der Flink-Anwendung und eine geeignete Senke, um die Daten an Amazon S3 oder CloudWatch zu senden. Verwenden Sie das Java-Protokollierungs-System nicht für diesen Zweck. Darüber hinaus generiert die `Debug Monitoring Log Level`-Einstellung von Managed Service für Apache Flink eine große Menge an Datenverkehr, was zu Gegendruck führen kann. Sie sollten sie nur verwenden, wenn Sie aktiv Probleme mit der Anwendung untersuchen.

## Logs mit CloudWatch Logs Insights abfragen
<a name="logging-querying"></a>

CloudWatch Logs Insights ist ein leistungsstarker Dienst, um Logs in großem Umfang abzufragen. Kunden sollten seine Funktionen nutzen, um Protokolle schnell zu durchsuchen, um Fehler bei Betriebsereignissen zu identifizieren und zu beheben.

 Die folgende Abfrage sucht in allen Task-Manager-Protokollen nach Ausnahmen und ordnet sie nach dem Zeitpunkt, zu dem sie aufgetreten sind.

```
fields @timestamp, @message
| filter isPresent(throwableInformation.0) or isPresent(throwableInformation) or @message like /(Error|Exception)/
| sort @timestamp desc
```

Weitere nützliche Abfragen finden Sie unter [Beispielabfragen](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs-reading.html#cloudwatch-logs-reading-examples).

# Überwachung im Managed Service für Apache Flink
<a name="monitoring"></a>

Wenn Sie Streaming-Anwendungen in der Produktion ausführen, möchten Sie die Anwendung kontinuierlich und unbegrenzt ausführen. Es ist wichtig, die Überwachung und korrekte Alarmierung aller Komponenten zu implementieren, nicht nur der Flink-Anwendung. Andernfalls riskieren Sie, aufkommende Probleme frühzeitig zu übersehen und ein operatives Ereignis erst dann zu erkennen, wenn es vollständig aufgelöst und viel schwieriger zu beheben ist. Zu den allgemeinen Dingen, die es zu überwachen gilt, gehören:
+ Nimmt die Quelle Daten auf?
+ Werden Daten aus der Quelle gelesen (aus der Perspektive der Quelle)?
+ Empfängt die Flink-Anwendung Daten?
+ Kann die Flink-Anwendung Schritt halten oder gerät sie ins Hintertreffen?
+ Speichert die Flink-Anwendung Daten dauerhaft in der Senke (aus Sicht der Anwendung)?
+ Empfängt die Senke Daten?

Spezifischere Metriken sollten dann für die Flink-Anwendung in Betracht gezogen werden. Dieses [CloudWatch Dashboard](https://github.com/aws-samples/kda-metrics-dashboard) bietet einen guten Ausgangspunkt. Weitere Informationen darüber, welche Metriken für Produktionsanwendungen überwacht werden sollten, finden Sie unter [Verwenden Sie CloudWatch Alarme mit Amazon Managed Service für Apache Flink](monitoring-metrics-alarms.md). Zu diesen Metriken gehören:
+ **records\$1lag\$1max** und **millisbehindLatest** – Wenn die Anwendung von Kinesis oder Kafka konsumiert, geben diese Metriken an, ob die Anwendung hinterherhinkt und abskaliert werden muss, um mit der aktuellen Auslastung Schritt zu halten. Dies ist eine gute generische Metrik, die für alle Arten von Anwendungen leicht nachzuverfolgen ist. Sie kann jedoch nur für reaktive Skalierung verwendet werden, d. h. wenn die Anwendung bereits ins Hintertreffen geraten ist.
+ **cpuUtilization** und **heapMemoryUtilization**— Diese Metriken geben einen guten Hinweis auf die Gesamtressourcenauslastung der Anwendung und können für eine proaktive Skalierung verwendet werden, sofern die Anwendung nicht gebunden ist I/O .
+ **downtime** – Eine Ausfallzeit von mehr als Null bedeutet, dass die Anwendung ausgefallen ist. Wenn der Wert größer als 0 ist, verarbeitet die Anwendung keine Daten.
+ **lastCheckpointSize**und *lastCheckpointDuration*— Diese Metriken überwachen, wie viele Daten im Status gespeichert sind und wie lange es dauert, bis ein Checkpoint erreicht wird. Wenn die Anzahl der Prüfpunkte zunimmt oder lange dauert, verbringt die Anwendung kontinuierlich Zeit mit Prüfpunkten und hat weniger Zyklen für die eigentliche Verarbeitung. An manchen Stellen können Prüfpunkte zu groß werden oder so lange dauern, dass sie ausfallen. Neben der Überwachung absoluter Werte sollten Kunden auch erwägen, die Änderungsrate mit `RATE(lastCheckpointSize)` und `RATE(lastCheckpointDuration)` zu überwachen.
+ **numberOfFailedCheckpoints** — Diese Metrik zählt die Anzahl der fehlgeschlagenen Checkpoints seit dem Start der Anwendung. Je nach Anwendung kann es toleriert werden, dass Prüfpunkte gelegentlich fehlschlagen. Wenn Prüfpunkte jedoch regelmäßig ausfallen, ist die Anwendung wahrscheinlich fehlerhaft und benötigt weitere Aufmerksamkeit. Wir empfehlen die Überwachung von `RATE(numberOfFailedCheckpoints)`, dass der Alarm anhand des Gefälles und nicht anhand absoluter Werte ausgelöst wird.

# Anwendungsprotokollierung in Managed Service für Apache Flink einrichten
<a name="cloudwatch-logs"></a>

Indem Sie Ihrer Managed Service for Apache Flink-Anwendung eine CloudWatch Amazon-Protokollierungsoption hinzufügen, können Sie Anwendungsereignisse oder Konfigurationsprobleme überwachen.

In diesem Thema wird beschrieben, wie Sie Ihre Anwendung so konfigurieren, dass Anwendungsereignisse in einen CloudWatch Logs-Stream geschrieben werden. Eine CloudWatch Protokollierungsoption ist eine Sammlung von Anwendungseinstellungen und Berechtigungen, mit denen Ihre Anwendung konfiguriert, wie Anwendungsereignisse in CloudWatch Protokolle geschrieben werden. Sie können eine CloudWatch Protokollierungsoption entweder mit dem AWS-Managementkonsole oder dem AWS Command Line Interface (AWS CLI) hinzufügen und konfigurieren.

Beachten Sie beim Hinzufügen einer CloudWatch Protokollierungsoption zu Ihrer Anwendung Folgendes:
+ Wenn Sie mithilfe der Konsole eine CloudWatch Protokollierungsoption hinzufügen, erstellt Managed Service for Apache Flink die CloudWatch Protokollgruppe und den Protokollstream für Sie und fügt die Berechtigungen hinzu, die Ihre Anwendung zum Schreiben in den Protokollstream benötigt. 
+ Wenn Sie mithilfe der API eine CloudWatch Protokollierungsoption hinzufügen, müssen Sie auch die Protokollgruppe und den Protokollstream der Anwendung erstellen und die Berechtigungen hinzufügen, die Ihre Anwendung zum Schreiben in den Protokollstream benötigt.

## Richten Sie die CloudWatch Protokollierung mithilfe der Konsole ein
<a name="cloudwatch-logs-console"></a>

Wenn Sie die CloudWatch Protokollierung für Ihre Anwendung in der Konsole aktivieren, werden eine CloudWatch Protokollgruppe und ein Protokollstream für Sie erstellt. Außerdem wird die Berechtigungsrichtlinie Ihrer Anwendung mit den Berechtigungen zum Schreiben in den Stream aktualisiert. 

Managed Service for Apache Flink erstellt eine Protokollgruppe, die nach der folgenden Konvention benannt *ApplicationName* wird, wobei der Name Ihrer Anwendung verwendet wird.

```
/aws/kinesis-analytics/ApplicationName
```

Managed Service für Apache Flink erstellt einen Protokollstream in der neuen Protokollgruppe mit dem folgenden Namen.

```
kinesis-analytics-log-stream
```

Sie legen die Ebene der Anwendungsüberwachungsmetriken und die Protokollebene mit dem Abschnitt **Überwachung der Protokollebene** der Seite **Anwendung konfigurieren** fest. Hinweise zu den Protokollebenen von Anwendungen finden Sie unter [Steuern Sie die Ebenen der Anwendungsüberwachung](#cloudwatch_levels).

## CloudWatch Logging mit der CLI einrichten
<a name="cloudwatch-logs-api"></a>

Um eine CloudWatch Protokollierungsoption mit dem hinzuzufügen AWS CLI, gehen Sie wie folgt vor: 
+ Erstellen Sie eine CloudWatch Protokollgruppe und einen Protokollstream.
+ Fügen Sie eine Protokollierungsoption hinzu, wenn Sie mithilfe der [CreateApplication](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)Aktion eine Anwendung erstellen, oder fügen Sie mithilfe der [AddApplicationCloudWatchLoggingOption](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html)Aktion einer vorhandenen Anwendung eine Protokollierungsoption hinzu.
+ Fügen Sie der Richtlinie Ihrer Anwendung Berechtigungen zum Schreiben in die Protokolle hinzu.

### Erstellen Sie eine CloudWatch Protokollgruppe und einen Protokollstream
<a name="cloudwatch-logs-api-create"></a>

Sie erstellen eine CloudWatch Protokollgruppe und streamen entweder mit der CloudWatch Logs-Konsole oder der API. Informationen zum Erstellen einer CloudWatch Protokollgruppe und eines Protokollstreams finden Sie unter [Arbeiten mit Protokollgruppen und Protokollströmen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html).

### Arbeiten Sie mit den Optionen für die CloudWatch Anwendungsprotokollierung
<a name="adding_cloudwatch"></a>

Verwenden Sie die folgenden API-Aktionen, um einer neuen oder vorhandenen Anwendung eine CloudWatch Protokolloption hinzuzufügen oder eine Protokolloption für eine bestehende Anwendung zu ändern. Weitere Informationen zur Verwendung einer JSON-Datei für die Eingabe einer API-Aktion finden Sie unter [Beispielcode für Managed Service für Apache Flink API](api-examples.md).

#### Fügen Sie beim Erstellen einer Anwendung eine CloudWatch Protokolloption hinzu
<a name="add_cloudwatch_create"></a>

Das folgende Beispiel zeigt, wie Sie die `CreateApplication` Aktion verwenden, um beim Erstellen einer Anwendung eine CloudWatch Protokolloption hinzuzufügen. Im Beispiel, ersetzen Sie *Amazon Resource Name (ARN) of the CloudWatch Log stream to add to the new application* mit Ihren eigenen Informationen. Weitere Informationen zur Aktion finden Sie unter [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html).

```
{
    "ApplicationName": "test",
    "ApplicationDescription": "test-application-description",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::123456789123:role/myrole",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation":{
                              "BucketARN": "arn:aws:s3:::amzn-s3-demo-bucket",
                              "FileKey": "myflink.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        }
    },
    "CloudWatchLoggingOptions": [{
      "LogStreamARN": "<Amazon Resource Name (ARN) of the CloudWatch log stream to add to the new application>"
	}]
}
```

#### Fügen Sie einer vorhandenen Anwendung eine CloudWatch Protokolloption hinzu
<a name="add_to_existing_app"></a>

Das folgende Beispiel zeigt, wie die `AddApplicationCloudWatchLoggingOption` Aktion verwendet wird, um einer vorhandenen Anwendung eine CloudWatch Protokolloption hinzuzufügen. Ersetzen Sie im Beispiel jede Information *user input placeholder* durch Ihre eigenen Informationen. Weitere Informationen zur Aktion finden Sie unter [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html).

```
{
   "ApplicationName": "<Name of the application to add the log option to>",
   "CloudWatchLoggingOption": { 
      "LogStreamARN": "<ARN of the log stream to add to the application>"
   },
   "CurrentApplicationVersionId": <Version of the application to add the log to>
}
```

#### Aktualisieren Sie eine bestehende CloudWatch Protokolloption
<a name="update_existing"></a>

Das folgende Beispiel zeigt, wie die `UpdateApplication` Aktion verwendet wird, um eine bestehende CloudWatch Protokolloption zu ändern. Ersetzen Sie im Beispiel jede *user input placeholder* durch Ihre eigenen Informationen. Weitere Informationen zur Aktion finden Sie unter [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html).

```
{
   "ApplicationName": "<Name of the application to update the log option for>",
   "CloudWatchLoggingOptionUpdates": [ 
         { 
            "CloudWatchLoggingOptionId": "<ID of the logging option to modify>",
            "LogStreamARNUpdate": "<ARN of the new log stream to use>"
         }
      ],
   "CurrentApplicationVersionId": <ID of the application version to modify>
}
```

#### Löschen Sie eine CloudWatch Protokolloption aus einer Anwendung
<a name="delete-log"></a>

Das folgende Beispiel zeigt, wie die `DeleteApplicationCloudWatchLoggingOption` Aktion zum Löschen einer vorhandenen CloudWatch Protokolloption verwendet wird. Ersetzen Sie im Beispiel jede *user input placeholder* durch Ihre eigenen Informationen. Weitere Informationen zur Aktion finden Sie unter [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationCloudWatchLoggingOption.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationCloudWatchLoggingOption.html).

```
{
   "ApplicationName": "<Name of application to delete log option from>",
   "CloudWatchLoggingOptionId": "<ID of the application log option to delete>",
   "CurrentApplicationVersionId": <Version of the application to delete the log option from>
}
```

#### Stellen Sie die Protokollierungsebene der Anwendung ein
<a name="cloudwatch-level"></a>

Um die Ebene der Anwendungsprotokollierung festzulegen, verwenden Sie den [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfiguration.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfiguration.html)-Parameter der [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)-Aktion oder den [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html)-Parameter der [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)-Aktion. 

Hinweise zu den Protokollebenen von Anwendungen finden Sie unter [Steuern Sie die Ebenen der Anwendungsüberwachung](#cloudwatch_levels).

##### Legen Sie die Anwendungsprotokollierungsebene fest, wenn Sie eine Anwendung erstellen
<a name="cloudwatch-level-create"></a>

In der folgenden Beispielanforderung für die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)-Aktion wird die Protokollebene der Anwendung auf `INFO` festgelegt.

```
{
   "ApplicationName": "MyApplication",                    
   "ApplicationDescription": "My Application Description",
   "ApplicationConfiguration": {
      "ApplicationCodeConfiguration":{
      "CodeContent":{
        "S3ContentLocation":{
          "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket",
          "FileKey":"myflink.jar",
          "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345"
        }
      },
      "CodeContentType":"ZIPFILE"
      },
      "FlinkApplicationConfiguration": 
         "MonitoringConfiguration": { 
            "ConfigurationType": "CUSTOM",
            "LogLevel": "INFO"
         }
      },
   "RuntimeEnvironment": "FLINK-1_15",
   "ServiceExecutionRole": "arn:aws:iam::123456789123:role/myrole"
}
```

##### Aktualisieren Sie die Protokollierungsebene der Anwendung
<a name="cloudwatch-level-update"></a>

In der folgenden Beispielanforderung für die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)-Aktion wird die Protokollebene der Anwendung auf `INFO` festgelegt.

```
{
   "ApplicationConfigurationUpdate": {
      "FlinkApplicationConfigurationUpdate": { 
         "MonitoringConfigurationUpdate": { 
            "ConfigurationTypeUpdate": "CUSTOM",
            "LogLevelUpdate": "INFO"
         }
      }
   }
}
```

### Fügen Sie Berechtigungen hinzu, um in den CloudWatch Protokollstream zu schreiben
<a name="enable_putlogevents"></a>

Managed Service for Apache Flink benötigt Berechtigungen zum Schreiben von Fehlern bei Fehlkonfigurationen. CloudWatch Sie können diese Berechtigungen der AWS Identity and Access Management (IAM-) Rolle hinzufügen, die Managed Service for Apache Flink annimmt.

Weitere Informationen zur Verwendung einer IAM-Rolle für Managed Service für Apache Flink finden Sie unter. [Identity and Access Management für Amazon Managed Service für Apache Flink](security-iam.md)

#### Vertrauensrichtlinie
<a name="enable_putlogevents_trust_policy"></a>

Zum Erteilen von Managed Service für Apache Flink-Berechtigungen, um eine IAM-Rolle anzunehmen, können Sie an die Serviceausführungs-Rolle die folgende Vertrauensrichtlinie anhängen.

------
#### [ JSON ]

****  

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

------

#### Berechtigungsrichtlinie
<a name="enable_putlogevents_permissions_policy"></a>

Um einer Anwendung Berechtigungen zum Schreiben von Protokollereignissen CloudWatch aus einer Managed Service for Apache Flink-Ressource zu erteilen, können Sie die folgende IAM-Berechtigungsrichtlinie verwenden. Geben Sie die richtigen Amazon-Ressourcennamen (ARNs) für Ihre Protokollgruppe und Ihren Stream ein.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt0123456789000",
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:log-stream:my-log-stream*",
                "arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:*",
                "arn:aws:logs:us-east-1:123456789012:log-group:*"
            ]
        }
    ]
}
```

------

## Steuern Sie die Ebenen der Anwendungsüberwachung
<a name="cloudwatch_levels"></a>

Sie steuern die Generierung von Anwendungsprotokollmeldungen mithilfe von *Überwachung der Metrikebene* und *Überwachung der Protokollebene* der Anwendung.

Die Überwachung der Metrikebene der Anwendung steuert die Granularität der Protokollnachrichten. Die Überwachung der Metrikebenen sind wie folgt definiert:
+ **Anwendung**: Metriken beziehen sich auf die gesamte Anwendung.
+ **Aufgabe**: Metriken beziehen sich auf jede Aufgabe. Weitere Informationen zu Aufgaben finden Sie unter [Implementieren Sie die Anwendungsskalierung in Managed Service für Apache Flink](how-scaling.md).
+ **Operator**: Metriken sind auf jeden Operator beschränkt. Weitere Informationen zu Operatoren finden Sie unter [Transformieren Sie Daten mithilfe von Operatoren in Managed Service für Apache Flink mit der API DataStream](how-operators.md).
+ **Parallelität**: Metriken sind auf Anwendungsparallelität beschränkt. Sie können diese Metrikebene nur mithilfe des [ MonitoringConfigurationUpdate[ UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html)API-Parameters festlegen. Diese Metrikebene kann nicht mithilfe der Konsole festgelegt werden. Informationen zur Parallelität finden Sie unter [Implementieren Sie die Anwendungsskalierung in Managed Service für Apache Flink](how-scaling.md).

Die Überwachung der Protokollebene der Anwendung steuert die Ausführlichkeit des Anwendungsprotokolls. Die Überwachung der Protokollebene ist wie folgt definiert:
+ **Fehler**: Mögliche katastrophale Ereignisse der Anwendung.
+ **Warnung**: Potenziell schädliche Situationen der Anwendung.
+ **Info**: Informative und vorübergehende Ausfälle der Anwendung. Wir empfehlen die Verwendung dieser Protokollierungsebene.
+ **Debug**: Detaillierte Informationsereignisse, die für das Debuggen einer Anwendung am nützlichsten sind. *Hinweis*: Verwenden Sie diese Ebene nur für temporäre Debugging-Zwecke. 

## Wenden Sie bewährte Methoden für die Protokollierung an
<a name="cloudwatch_bestpractices"></a>

Wir empfehlen, dass Ihre Anwendung die Protokollierungsebene **Info** verwendet. Wir empfehlen diese Stufe, um sicherzustellen, dass Sie Apache Flink-Fehler sehen, die auf der **Informations**-Ebene und nicht auf der **Fehler**-Ebene protokolliert werden.

Wir empfehlen, die **Debug**-Ebene nur vorübergehend zu verwenden, um Anwendungsprobleme zu untersuchen. Wechseln Sie zurück zur **Informations**-Ebene, wenn das Problem behoben ist. Die Verwendung der **Debug**-Protokollierungsebene wirkt sich erheblich auf die Leistung Ihrer Anwendung aus.

Eine übermäßige Protokollierung kann sich auch erheblich auf die Anwendungsleistung auswirken. Wir empfehlen beispielsweise, nicht für jeden verarbeiteten Datensatz einen Protokolleintrag zu schreiben. Eine übermäßige Protokollierung kann zu schwerwiegenden Engpässen bei der Datenverarbeitung und zu einem Gegendruck beim Lesen von Daten aus den Quellen führen.

## Führen Sie eine Problembehebung bei
<a name="cloudwatch_troubleshooting"></a>

Wenn Anwendungsprotokolle nicht in den Protokollstream geschrieben werden, überprüfen Sie Folgendes: 
+ Stellen Sie sicher, dass die IAM-Rolle und die Richtlinien Ihrer Anwendung korrekt sind. Die Richtlinie Ihrer Anwendung benötigt die folgenden Berechtigungen, um auf Ihren Protokollstream zugreifen zu können:
  + `logs:PutLogEvents`
  + `logs:DescribeLogGroups`
  + `logs:DescribeLogStreams`

  Weitere Informationen finden Sie unter [Fügen Sie Berechtigungen hinzu, um in den CloudWatch Protokollstream zu schreiben](#enable_putlogevents).
+ Überprüfen Sie, dass Ihre Anwendung ausgeführt wird. Um den Status Ihrer Anwendung zu überprüfen, rufen Sie die Seite Ihrer Anwendung in der Konsole auf oder verwenden Sie die [ListApplications](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplications.html)Aktionen [DescribeApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DescribeApplication.html)oder.
+ Überwachen Sie CloudWatch Messwerte`downtime`, um beispielsweise andere Anwendungsprobleme zu diagnostizieren. Informationen zum Lesen von CloudWatch Metriken finden Sie unter[Metriken und Dimensionen in Managed Service für Apache Flink](metrics-dimensions.md).

## Verwenden Sie CloudWatch Logs Insights
<a name="cloudwatch_next"></a>

Nachdem Sie die CloudWatch Protokollierung in Ihrer Anwendung aktiviert haben, können Sie CloudWatch Logs Insights verwenden, um Ihre Anwendungsprotokolle zu analysieren. Weitere Informationen finden Sie unter [Analysieren Sie Logs mit CloudWatch Logs Insights](cloudwatch-logs-reading.md).

# Analysieren Sie Logs mit CloudWatch Logs Insights
<a name="cloudwatch-logs-reading"></a>

Nachdem Sie Ihrer Anwendung eine CloudWatch Protokollierungsoption hinzugefügt haben, wie im vorherigen Abschnitt beschrieben, können Sie CloudWatch Logs Insights verwenden, um Ihre Log-Streams nach bestimmten Ereignissen oder Fehlern abzufragen.

CloudWatch Logs Insights ermöglicht es Ihnen, Ihre Protokolldaten in CloudWatch Logs interaktiv zu suchen und zu analysieren. 

Informationen zu den ersten Schritten mit CloudWatch Logs Insights finden Sie unter [Analysieren von Protokolldaten mit CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html).

## Ausführen einer Beispielabfrage
<a name="cloudwatch-logs-reading-run"></a>

In diesem Abschnitt wird beschrieben, wie Sie eine CloudWatch Logs Insights-Beispielabfrage ausführen.

**Voraussetzungen**
+ Bestehende Protokollgruppen und Protokollstreams, die in CloudWatch Logs eingerichtet wurden.
+ Bestehende Protokolle, die in CloudWatch Logs gespeichert sind.

Wenn Sie Dienste wie AWS CloudTrail Amazon Route 53 oder Amazon VPC verwenden, haben Sie wahrscheinlich bereits Protokolle von diesen Diensten eingerichtet, um sie unter CloudWatch Logs zu speichern. Weitere Informationen zum Senden von Protokollen an CloudWatch Logs finden Sie unter [Erste Schritte mit CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_GettingStarted.html).

Abfragen in CloudWatch Logs Insights geben entweder eine Reihe von Feldern aus Protokollereignissen oder das Ergebnis einer mathematischen Aggregation oder eines anderen Vorgangs zurück, der mit Protokollereignissen ausgeführt wurde. Dieser Abschnitt demonstriert eine Abfrage, die eine Liste von Protokollereignissen zurückgibt.

**Um eine CloudWatch Logs Insights-Beispielabfrage auszuführen**

1. Öffnen Sie die CloudWatch Konsole unter [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Wählen Sie im Navigationsbereich ** Insights** aus.

   

1. Der Abfrage-Editor fast am oberen Ende des Bildschirms enthält eine Standardabfrage, die die 20 letzten Protokollereignisse zurückgibt. Wählen Sie oberhalb des Abfrage-Editors eine Protokollgruppe zur Abfrage aus.

   

   Wenn Sie eine Protokollgruppe auswählen, erkennt CloudWatch Logs Insights automatisch Felder in den Daten in der Protokollgruppe und zeigt sie im rechten Bereich unter Entdeckte **Felder** an. Dort finden Sie auch ein Balkendiagramm der Protokollereignisse in dieser Protokollgruppe im Zeitverlauf. Dieses Balkendiagramm zeigt die Verteilung der Ereignisse in der Protokollgruppe, die Ihrer Abfrage und Ihrem Zeitraum entspricht, nicht nur die in der Tabelle angezeigten Ereignisse.

1. Wählen Sie **Abfrage ausführen**.

   Die Ergebnisse der Abfrage werden angezeigt. In diesem Beispiel sind die Ergebnisse die letzten 20 Protokollereignisse aller Art.

1. Um alle Felder eines der zurückgegebenen Protokollereignisse anzuzeigen, wählen Sie den Pfeil links neben diesem Protokollereignis aus.

Weitere Informationen zum Ausführen und Ändern von CloudWatch Logs Insights-Abfragen finden Sie unter [Ausführen und Ändern einer Beispielabfrage](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_RunSampleQuery.html).

## Sehen Sie sich Beispielabfragen an
<a name="cloudwatch-logs-reading-examples"></a>

Dieser Abschnitt enthält CloudWatch Logs Insights-Beispielabfragen zur Analyse der Anwendungsprotokolle von Managed Service for Apache Flink. Diese Abfragen suchen nach mehreren Beispielfehlerbedingungen und dienen als Vorlagen für das Schreiben von Abfragen, die andere Fehlerbedingungen finden. 

**Anmerkung**  
Ersetzen Sie Region (*us-west-2*), Konto-ID (*012345678901*) und Anwendungsname (*YourApplication*) in den folgenden Abfragebeispielen durch die Region Ihrer Anwendung und Ihre Konto-ID.

**Topics**
+ [Analysieren Sie den Betrieb: Verteilung der Aufgaben](#cloudwatch-logs-reading-tm)
+ [Operationen analysieren: Änderung der Parallelität](#cloudwatch-logs-reading-auto)
+ [Fehler analysieren: Zugriff verweigert](#cloudwatch-logs-reading-access)
+ [Fehler analysieren: Quelle oder Senke nicht gefunden](#cloudwatch-logs-reading-con)
+ [Fehler analysieren: Fehler im Zusammenhang mit Anwendungsaufgaben](#cloudwatch-logs-reading-apps)

### Analysieren Sie den Betrieb: Verteilung der Aufgaben
<a name="cloudwatch-logs-reading-tm"></a>

Die folgende CloudWatch Logs Insights-Abfrage gibt die Anzahl der Aufgaben zurück, die der Apache Flink Job Manager auf die Taskmanager verteilt. Sie müssen den Zeitrahmen der Abfrage so einstellen, dass er einer Jobausführung entspricht, sodass die Abfrage keine Aufgaben aus früheren Jobs zurückgibt. Informationen zur Parallelität finden Sie unter [Implementieren Sie Anwendungsskalierung](how-scaling.md). 

```
fields @timestamp, message
| filter message like /Deploying/
| parse message " to flink-taskmanager-*" as @tmid
| stats count(*) by @tmid
| sort @timestamp desc
| limit 2000
```

Die folgende CloudWatch Logs Insights-Abfrage gibt die Unteraufgaben zurück, die jedem Task Manager zugewiesen sind. Die Gesamtzahl der Unteraufgaben ist die Summe der Parallelität jeder Aufgabe. Die Aufgabenparallelität wird aus der Operatorparallelität abgeleitet und entspricht standardmäßig der Parallelität der Anwendung, sofern Sie sie nicht im Code durch Angabe von `setParallelism` ändern. Informationen zur Einstellung der Operatorparallelität finden Sie unter [Einstellen der Parallelität: Operatorebene](https://nightlies.apache.org/flink/flink-docs-release-1.15/dev/parallel.html#operator-level) in der [Dokumentation von Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.15/).

```
fields @timestamp, @tmid, @subtask
| filter message like /Deploying/
| parse message "Deploying * to flink-taskmanager-*" as @subtask, @tmid
| sort @timestamp desc
| limit 2000
```

Informationen zu Aufgabenplanung finden Sie unter [Aufträge und Planung](https://nightlies.apache.org/flink/flink-docs-release-1.15/internals/job_scheduling.html) in der [Apache-Flink-Dokumentation](https://nightlies.apache.org/flink/flink-docs-release-1.15/).

### Operationen analysieren: Änderung der Parallelität
<a name="cloudwatch-logs-reading-auto"></a>

Die folgende CloudWatch Logs Insights-Abfrage gibt Änderungen an der Parallelität einer Anwendung zurück (z. B. aufgrund der automatischen Skalierung). Diese Abfrage gibt auch manuelle Änderungen an der Parallelität der Anwendung zurück. Weitere Informationen zum Auto Scaling finden Sie unter [Verwenden Sie die automatische Skalierung in Managed Service für Apache Flink](how-scaling-auto.md).

```
fields @timestamp, @parallelism
| filter message like /property: parallelism.default, /
| parse message "default, *" as @parallelism
| sort @timestamp asc
```

### Fehler analysieren: Zugriff verweigert
<a name="cloudwatch-logs-reading-access"></a>

Die folgende CloudWatch Logs Insights-Abfrage gibt `Access Denied` Protokolle zurück.

```
fields @timestamp, @message, @messageType
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /AccessDenied/
| sort @timestamp desc
```

### Fehler analysieren: Quelle oder Senke nicht gefunden
<a name="cloudwatch-logs-reading-con"></a>

Die folgende CloudWatch Logs Insights-Abfrage gibt `ResourceNotFound` Protokolle zurück. `ResourceNotFound`protokolliert das Ergebnis, wenn eine Kinesis-Quelle oder -Senke nicht gefunden wird.

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /ResourceNotFoundException/
| sort @timestamp desc
```

### Fehler analysieren: Fehler im Zusammenhang mit Anwendungsaufgaben
<a name="cloudwatch-logs-reading-apps"></a>

Die folgende CloudWatch Logs Insights-Abfrage gibt die aufgabenbezogenen Fehlerprotokolle einer Anwendung zurück. Diese Protokolle entstehen, wenn der Status einer Anwendung von `RUNNING` zu wechselt `RESTARTING`.

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /switched from RUNNING to RESTARTING/
| sort @timestamp desc
```

Bei Anwendungen, die Apache Flink Version 1.8.2 und früher verwenden, führen aufgabenbezogene Fehler dazu, dass der Anwendungsstatus stattdessen von `RUNNING` zu wechselt `FAILED`. Wenn Sie Apache Flink 1.8.2 und frühere Versionen verwenden, verwenden Sie die folgende Abfrage, um nach Fehlern im Zusammenhang mit der Anwendungsaufgabe zu suchen:

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /switched from RUNNING to FAILED/
| sort @timestamp desc
```

# Metriken und Dimensionen in Managed Service für Apache Flink
<a name="metrics-dimensions"></a>

Wenn Ihr Managed Service für Apache Flink eine Datenquelle verarbeitet, meldet Managed Service for Apache Flink die folgenden Metriken und Dimensionen an Amazon. CloudWatch

**Änderungen der Flink 2.2-Metrik**  
Flink 2.2 führt metrische Änderungen ein, die sich auf Ihre Überwachung und Alarme auswirken können. Überprüfen Sie vor dem Upgrade die folgenden Änderungen:  
Die `fullRestarts` Metrik wurde entfernt. Verwenden Sie stattdessen `numRestarts`.
Die `downtime` Metriken `uptime` und sind veraltet und werden in einer future Version entfernt. Migrieren Sie zu den neuen landesspezifischen Metriken.
Die `bytesRequestedPerFetch` Metrik für den Kinesis Data Streams Streams-Connector 6.0.0 wurde entfernt.

## Anwendungsmetriken
<a name="metrics-dimensions-jobs"></a>


| Metrik | Einheit | Description | Level | Nutzungshinweise | 
| --- | --- | --- | --- | --- | 
| backPressuredTimeMsPerSecond\$1 | Millisekunden | Die Zeit (in Millisekunden), in der diese Aufgabe oder dieser Operator pro Sekunde unter Gegendruck gesetzt wird. | Aufgabe, Operator, Parallelität | \$1Nur für Managed Service für Apache Flink-Anwendungen verfügbar, auf denen Flink Version 1.13 ausgeführt wird. Diese Metriken können nützlich sein, um Engpässe in einer Anwendung zu identifizieren. | 
| busyTimeMsPerSecond\$1 | Millisekunden | Die Zeit (in Millisekunden), in der diese Aufgabe oder dieser Operator pro Sekunde beschäftigt (weder inaktiv noch unter Gegendruck gesetzt) ist. Kann NaN sein, wenn der Wert nicht berechnet werden konnte. | Aufgabe, Operator, Parallelität | \$1Nur für Managed Service für Apache Flink-Anwendungen verfügbar, auf denen Flink Version 1.13 ausgeführt wird. Diese Metriken können nützlich sein, um Engpässe in einer Anwendung zu identifizieren. | 
| cpuUtilization | Prozentsatz | Prozentsatz der CPU-Auslastung in allen Task-Managern. Wenn es beispielsweise fünf Taskmanager gibt, veröffentlicht Managed Service für Apache Flink pro Berichtsintervall fünf Beispiele dieser Metrik. | Anwendung | Sie können diese Metrik verwenden, um die minimale, durchschnittliche und maximale CPU-Auslastung in Ihrer Anwendung zu überwachen. Die CPUUtilization Metrik berücksichtigt nur die CPU-Auslastung des TaskManager JVM-Prozesses, der im Container ausgeführt wird.  | 
| containerCPUUtilization | Prozentsatz | Gesamtprozentsatz der CPU-Auslastung in allen Task-Manager-Containern im Flink-Anwendungscluster. Wenn es beispielsweise fünf Taskmanager gibt, gibt es entsprechend fünf TaskManager Container, und Managed Service for Apache Flink veröffentlicht pro Berichtsintervall von 1 Minute 2 x fünf Stichproben dieser Metrik. | Anwendung | Sie wird pro Container wie folgt berechnet: *Gesamt-CPU-Zeit (in Sekunden), die vom Container verbraucht wird \$1 100/Container-CPU-Limit (in CPUs /Sekunden)* Die `CPUUtilization` Metrik berücksichtigt nur die CPU-Auslastung des TaskManager JVM-Prozesses, der im Container ausgeführt wird. Es gibt andere Komponenten, die außerhalb der JVM innerhalb desselben Containers ausgeführt werden. Die `containerCPUUtilization`-Metrik gibt Ihnen ein vollständigeres Bild, einschließlich aller Prozesse im Hinblick auf die CPU-Auslastung im Container und die daraus resultierenden Ausfälle.  | 
| containerMemoryUtilization | Prozentsatz | Gesamtprozentsatz der Speicherauslastung in allen Task-Manager-Containern im Flink-Anwendungscluster. Wenn es beispielsweise fünf Taskmanager gibt, gibt es entsprechend fünf TaskManager Container, und Managed Service for Apache Flink veröffentlicht pro Berichtsintervall von 1 Minute 2 x fünf Stichproben dieser Metrik. | Anwendung | Sie wird pro Container wie folgt berechnet: *Speichernutzung des Containers (Byte) \$1 100/Container-Speicherlimit gemäß der Pod-Bereitstellungsspezifikation (in Byte)* Die `ManagedMemoryUtilzations` Metriken `HeapMemoryUtilization` und berücksichtigen nur bestimmte Speichermetriken wie die Heap-Speicherauslastung von TaskManager JVM oder Managed Memory (Speichernutzung außerhalb von JVM für native Prozesse wie [RocksDB](https://flink.apache.org/2021/01/18/rocksdb.html#:~:text=Conclusion-,The%20RocksDB%20state%20backend%20(i.e.%2C%20RocksDBStateBackend)%20is%20one%20of,with%20exactly%2Donce%20processing%20guarantees.) State Backend). Die `containerMemoryUtilization`-Metrik gibt Ihnen ein vollständigeres Bild, da sie den festgelegten Arbeitsspeicher mit einbezieht, wodurch die gesamte Speichererschöpfung besser erfasst werden kann. Wenn es erschöpft ist, führt es dazu, dass der Pod kaputt geht. `Out of Memory Error` TaskManager   | 
| containerDiskUtilization | Prozentsatz | Gesamtprozentsatz der Festplattenauslastung in allen Task-Manager-Containern im Flink-Anwendungscluster. Wenn es beispielsweise fünf Taskmanager gibt, gibt es entsprechend fünf TaskManager Container, und Managed Service for Apache Flink veröffentlicht pro Berichtsintervall von einer Minute 2 x fünf Stichproben dieser Metrik. | Anwendung | Sie wird pro Container wie folgt berechnet: *Festplattennutzung in Byte \$1 100/Festplattenlimit für Container in Byte* Bei Containern steht dies für die Nutzung des Dateisystems, auf dem das Root-Volume des Containers eingerichtet ist.  | 
| currentInputWatermark | Millisekunden | Das letzte Wasserzeichen, das diese Datei erhalten hat application/operator/task/thread | Anwendung, Operator, Aufgabe, Parallelität | Dieser Datensatz wird nur für Dimensionen mit zwei Eingaben ausgegeben. Dies ist der Mindestwert der zuletzt empfangenen Wasserzeichen. | 
| currentOutputWatermark | Millisekunden | Das letzte Wasserzeichen, das dadurch application/operator/task/thread ausgegeben wurde | Anwendung, Operator, Aufgabe, Parallelität |  | 
| downtime[VERALTET] | Millisekunden | Bei Jobs, die sich derzeit in einer failing/recovering Situation befinden, ist dies die Zeit, die während dieses Ausfalls verstrichen ist. | Anwendung | Diese Kennzahl misst die Zeit, die verstrichen ist, während ein Job ausfällt oder wiederhergestellt wird. Diese Metrik gibt 0 für laufende Jobs und -1 für abgeschlossene Jobs zurück. Wenn diese Metrik nicht 0 oder -1 ist, bedeutet dies, dass der Apache Flink-Job für die Anwendung nicht ausgeführt werden konnte. **In Flink 2.2 veraltet.** Verwenden Sie stattdessen`restartingTime`. `cancellingTime` and/or `failingTime` | 
| failingTime | Millisekunden | Die Zeit (in Millisekunden), die die Anwendung in einem fehlerhaften Zustand verbracht hat. Verwenden Sie diese Metrik, um Anwendungsausfälle zu überwachen und Warnmeldungen auszulösen. | Anwendung, Ablauf | Verfügbar ab Flink 2.2. Ersetzt einen Teil der veralteten Metrikdowntime. | 
| heapMemoryUtilization | Prozentsatz | Gesamtauslastung des Heap-Speichers in allen Task-Managern. Wenn es beispielsweise fünf Taskmanager gibt, veröffentlicht Managed Service für Apache Flink pro Berichtsintervall fünf Beispiele dieser Metrik. | Anwendung | Sie können diese Metrik verwenden, um die minimale, durchschnittliche und maximale Heap-Speicherauslastung in Ihrer Anwendung zu überwachen. Sie berücksichtigt HeapMemoryUtilization nur bestimmte Speichermetriken wie die Heap-Speicherauslastung von JVM. TaskManager  | 
| idleTimeMsPerSecond\$1 | Millisekunden | Die Zeit (in Millisekunden), in der sich diese Task oder dieser Operator pro Sekunde im Leerlauf befindet (keine zu verarbeitenden Daten hat). Bei der Leerlaufzeit wird die Zeit nicht berücksichtigt, in der Gegendruck ausgeübt wird, wenn also die Aufgabe unter Gegendruck steht, handelt es sich nicht um Inaktivität. | Aufgabe, Operator, Parallelität | \$1Nur für Managed Service für Apache Flink-Anwendungen verfügbar, auf denen Flink Version 1.13 ausgeführt wird. Diese Metriken können nützlich sein, um Engpässe in einer Anwendung zu identifizieren. | 
| lastCheckpointSize | Bytes | Die Gesamtgröße des letzten Prüfpunkts | Anwendung | Sie können diese Metrik verwenden, um die Speicherauslastung laufender Anwendungen zu ermitteln. Wenn der Wert dieser Metrik steigt, kann dies darauf hindeuten, dass ein Problem mit Ihrer Anwendung vorliegt, z. B. ein Speicherleck oder ein Engpass. | 
| lastCheckpointDuration | Millisekunden | Die Zeit, die benötigt wurde, um den letzten Prüfpunkt abzuschließen | Anwendung | Diese Kennzahl misst die Zeit, die benötigt wurde, um den letzten Prüfpunkt abzuschließen. Wenn der Wert dieser Metrik steigt, kann dies darauf hindeuten, dass ein Problem mit Ihrer Anwendung vorliegt, z. B. ein Speicherleck oder ein Engpass. In einigen Fällen können Sie dieses Problem beheben, indem Sie die Prüfpunktprüfung deaktivieren. | 
| managedMemoryUsed\$1 | Bytes | Die derzeit verwendete verwaltete Speichermenge. | Anwendung, Operator, Aufgabe, Parallelität | \$1Nur für Managed Service für Apache Flink-Anwendungen verfügbar, auf denen Flink Version 1.13 ausgeführt wird. Dies bezieht sich auf Speicher, der von Flink außerhalb des Java-Heaps verwaltet wird. Es wird für das RocksDB-State-Backend verwendet und ist auch für Anwendungen verfügbar. | 
| managedMemoryTotal\$1 | Bytes | Die Gesamtgröße des verwalteten Speichers. | Anwendung, Operator, Aufgabe, Parallelität | \$1Nur für Managed Service für Apache Flink-Anwendungen verfügbar, auf denen Flink Version 1.13 ausgeführt wird. Dies bezieht sich auf Speicher, der von Flink außerhalb des Java-Heaps verwaltet wird. Es wird für das RocksDB-State-Backend verwendet und ist auch für Anwendungen verfügbar. Die `ManagedMemoryUtilzations`-Metrik berücksichtigt nur bestimmte Speichermetriken wie Managed Memory (Speichernutzung außerhalb von JVM für native Prozesse wie [RocksDB State Backend](https://flink.apache.org/2021/01/18/rocksdb.html#:~:text=Conclusion-,The%20RocksDB%20state%20backend%20(i.e.%2C%20RocksDBStateBackend)%20is%20one%20of,with%20exactly%2Donce%20processing%20guarantees.)) | 
| managedMemoryUtilization\$1 | Prozentsatz | Abgeleitet von/ managedMemoryUsedmanagedMemoryTotal | Anwendung, Operator, Aufgabe, Parallelität | \$1Nur für Managed Service für Apache Flink-Anwendungen verfügbar, auf denen Flink Version 1.13 ausgeführt wird. Dies bezieht sich auf Speicher, der von Flink außerhalb des Java-Heaps verwaltet wird. Es wird für das RocksDB-State-Backend verwendet und ist auch für Anwendungen verfügbar. | 
| numberOfFailedCheckpoints | Anzahl | Gibt an, wie oft die Prüfpunktüberprüfung fehlgeschlagen ist. | Anwendung | Sie können diese Metrik verwenden, um den Zustand und den Fortschritt von Anwendungen zu überwachen. Prüfpunkte können aufgrund von Anwendungsproblemen wie Durchsatz- oder Berechtigungsprobleme fehlschlagen.  | 
| numRecordsIn\$1 | Anzahl | Die Gesamtzahl der Datensätze, die diese Anwendung, dieser Operator oder diese Aufgabe erhalten hat. | Anwendung, Operator, Aufgabe, Parallelität | \$1Um die SUM-Statistik über einen bestimmten Zeitraum (Sekunde/Minute) anzuwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/metrics-dimensions.html) Die Ebene der Metrik gibt an, ob diese Metrik die Gesamtzahl der Datensätze misst, die die gesamte Anwendung, ein bestimmter Operator oder eine bestimmte Aufgabe empfangen hat. | 
| numRecordsInPerSecond\$1 | Anzahl/Sekunde | Die Gesamtzahl der Datensätze, die diese Anwendung, dieser Operator oder diese Aufgabe pro Sekunde erhalten hat. | Anwendung, Operator, Aufgabe, Parallelität | \$1Um die SUM-Statistik über einen bestimmten Zeitraum (Sekunde/Minute) anzuwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/metrics-dimensions.html) Die Ebene der Metrik gibt an, ob diese Metrik die Gesamtzahl der Datensätze misst, die die gesamte Anwendung, ein bestimmter Operator oder eine bestimmte Aufgabe pro Sekunde empfangen hat. | 
| numRecordsOut\$1 | Anzahl | Die Gesamtzahl der Datensätze, die diese Anwendung, dieser Operator oder diese Aufgabe ausgegeben hat. | Anwendung, Operator, Aufgabe, Parallelität |  \$1Um die SUM-Statistik über einen bestimmten Zeitraum (Sekunde/Minute) anzuwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/metrics-dimensions.html) Die Ebene der Metrik gibt an, ob diese Metrik die Gesamtzahl der Datensätze misst, die die gesamte Anwendung, ein bestimmter Operator oder eine bestimmte Aufgabe ausgegeben hat. | 
| numLateRecordsDropped\$1 | Anzahl | Anwendung, Operator, Aufgabe, Parallelität |  | \$1Um die SUM-Statistik über einen bestimmten Zeitraum (Sekunde/Minute) anzuwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/metrics-dimensions.html) Die Anzahl der Datensätze, die dieser Operator oder diese Aufgabe aufgrund einer verspäteten Ankunft gelöscht hat. | 
| numRecordsOutPerSecond\$1 | Anzahl/Sekunde | Die Gesamtzahl der Datensätze, die diese Anwendung, dieser Operator oder diese Aufgabe pro Sekunde ausgegeben hat. | Anwendung, Operator, Aufgabe, Parallelität |  \$1Um die SUM-Statistik über einen bestimmten Zeitraum (Sekunde/Minute) anzuwenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/metrics-dimensions.html) Die Ebene der Metrik gibt an, ob diese Metrik die Gesamtzahl der Datensätze misst, die die gesamte Anwendung, ein bestimmter Operator oder eine bestimmte Aufgabe pro Sekunde ausgegeben hat. | 
| oldGenerationGCCount | Anzahl | Die Gesamtzahl der alten Garbage-Collection-Vorgänge, die in allen Task-Managern stattgefunden haben.  | Anwendung |  | 
| oldGenerationGCTime | Millisekunden | Die Gesamtzeit, die für die Durchführung alter Garbage-Collection-Vorgänge aufgewendet wurde.  | Anwendung | Sie können diese Metrik verwenden, um die Summe, den Durchschnitt und die maximale Zeit für die Garbage Collection zu überwachen. | 
| threadsCount | Anzahl | Die Gesamtzahl der von der Anwendung verwendeten Live-Threads.  | Anwendung | Diese Metrik misst die Anzahl der Threads, die vom Anwendungscode verwendet werden. Dies ist nicht dasselbe wie Anwendungsparallelität. | 
| cancellingTime | Millisekunden | Die Zeit (in Millisekunden), die die Anwendung im Abbruchstatus verbracht hat. Verwenden Sie diese Metrik, um Vorgänge zum Abbrechen von Anwendungen zu überwachen. | Anwendung, Ablauf | Verfügbar ab Flink 2.2. Ersetzt einen Teil der veralteten Metrikdowntime. | 
| restartingTime | Millisekunden | Die Zeit (in Millisekunden), die die Anwendung im Neustartzustand verbracht hat. Verwenden Sie diese Metrik, um das Neustartverhalten von Anwendungen zu überwachen. | Anwendung, Flow | Verfügbar ab Flink 2.2. Ersetzt einen Teil der veralteten Metrikdowntime. | 
| runningTime | Millisekunden | Die Zeit (in Millisekunden), zu der die Anwendung ohne Unterbrechung ausgeführt wurde. Ersetzt die veraltete Metrik. uptime | Anwendung, Ablauf | Verfügbar ab Flink 2.2. Verwenden Sie es als direkten Ersatz für die veraltete Metrikuptime. | 
| uptime[VERALTET] | Millisekunden | Die Zeit, zu der der Job ohne Unterbrechung ausgeführt wurde. | Anwendung | Sie können diese Metrik verwenden, um festzustellen, ob ein Job erfolgreich ausgeführt wird. Diese Metrik gibt -1 für abgeschlossene Jobs zurück. **In Flink 2.2 veraltet.** Verwenden Sie stattdessen `runningTime`. | 
| jobmanagerFileDescriptorsMax | Anzahl | Die maximale Anzahl von Dateideskriptoren, die für verfügbar sind. JobManager | Anwendung, Flow, Host | Verwenden Sie diese Metrik, um die Kapazität von Dateideskriptoren zu überwachen. | 
| jobmanagerFileDescriptorsOpen | Anzahl | Die aktuelle Anzahl offener Dateideskriptoren für. JobManager | Anwendung, Flow, Host | Verwenden Sie diese Metrik, um die Nutzung von Dateideskriptoren zu überwachen und eine potenzielle Ressourcenerschöpfung zu erkennen. | 
| taskmanagerFileDescriptorsMax | Anzahl | Die maximale Anzahl von Dateideskriptoren, die jedem zur Verfügung stehen. TaskManager | Anwendung, Flow, Host, tm\$1id | Verwenden Sie diese Metrik, um die Kapazität von Dateideskriptoren zu überwachen. | 
| taskmanagerFileDescriptorsOpen | Anzahl | Die aktuelle Anzahl der offenen Dateideskriptoren für jeden. TaskManager | Anwendung, Flow, Host, tm\$1id | Verwenden Sie diese Metrik, um die Nutzung von Dateideskriptoren zu überwachen und eine potenzielle Ressourcenerschöpfung zu erkennen. | 
| KPUs\$1 | Anzahl | Die Gesamtzahl der von der KPUs Anwendung verwendeten. | Anwendung | \$1Für diese Kennzahl wird eine Stichprobe pro Abrechnungszeitraum (eine Stunde) verwendet. Verwenden Sie MAX oder AVG KPUs über einen Zeitraum von mindestens einer (1) Stunde, um die Anzahl der Ereignisse im Laufe der Zeit zu visualisieren. Die KPU-Anzahl beinhaltet die `orchestration` KPU. Weitere Informationen finden Sie unter Preise für [Managed Service for Apache Flink](https://aws.amazon.com/managed-service-apache-flink/pricing/). | 

**Leitfaden für die Migration metrischer Daten zu Flink 2.2**  
**Migration von FullRestarts:** Die `fullRestarts` Metrik wurde in Flink 2.2 entfernt. Verwenden Sie stattdessen die Metrik`numRestarts`. Die `numRestarts` Metrik bietet gleichwertige Funktionen und kann als direkter Ersatz für CloudWatch Alarme verwendet werden, ohne dass Schwellenwertanpassungen erforderlich sind.  
**Migration von Uptime:** Die `uptime` Metrik ist in Flink 2.2 veraltet und wird in einer future Version entfernt. Verwenden Sie stattdessen die Metrik. `runningTime` Die `runningTime` Metrik bietet gleichwertige Funktionen und kann als direkter Ersatz für CloudWatch Alarme verwendet werden, ohne dass Schwellenwertanpassungen erforderlich sind.  
**Migration nach einer Ausfallzeit:** Die `downtime` Metrik ist in Flink 2.2 veraltet und wird in einer future Version entfernt. Je nachdem, was Sie überwachen möchten, verwenden Sie eine oder mehrere der folgenden Metriken:  
`restartingTime`: Überwachen Sie die Zeit, die für den Neustart der Anwendung aufgewendet wurde
`cancellingTime`: Überwachen Sie die Zeit, die für das Abbrechen der Anwendung aufgewendet wurde
`failingTime`: Überwachen Sie die Zeit, die in einem fehlerhaften Zustand verbracht wurde

## Metriken für den Kinesis Data Streams Streams-Konnektor
<a name="metrics-dimensions-stream"></a>

AWS gibt alle Datensätze für Kinesis Data Streams zusätzlich zu den folgenden aus:


| Metrik | Einheit | Description | Level | Nutzungshinweise | 
| --- | --- | --- | --- | --- | 
| millisbehindLatest | Millisekunden | Die Anzahl der Millisekunden, die der Verbraucher hinter der Spitze des Streams zurückliegt. Dies zeigt an, wie weit der Verbraucher hinter der aktuellen Zeit zurückliegt. | Anwendung (für Stream), Parallelismus (für) ShardId | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/managed-flink/latest/java/metrics-dimensions.html)  | 

**Anmerkung**  
Die `bytesRequestedPerFetch` Metrik wurde in der AWS Flink-Connector-Version 6.0.0 (der einzigen Connector-Version, die mit Flink 2.2 kompatibel ist) entfernt. Die einzige in Flink 2.2 verfügbare Kinesis Data Streams Streams-Connector-Metrik ist. `millisBehindLatest`

## Amazon MSK-Connector-Metriken
<a name="metrics-dimensions-msk"></a>

AWS gibt alle Datensätze für Amazon MSK zusätzlich zu den folgenden aus:


| Metrik | Einheit | Description | Level | Nutzungshinweise | 
| --- | --- | --- | --- | --- | 
| currentoffsets | – | Der aktuelle Lese-Offset des Verbrauchers für jede Partition. Die Metrik einer bestimmten Partition kann anhand des Themennamens und der Partitions-ID angegeben werden. | Anwendung (für Thema), Parallelität (für) PartitionId |  | 
| commitsFailed | – | Die Gesamtzahl der Fehler beim Offset-Commit an Kafka, wenn Offset-Commit und Prüfpunktprüfung aktiviert sind.  | Anwendung, Operator, Aufgabe, Parallelität | Das Zurückschreiben von Offsets an Kafka ist nur ein Mittel, um den Verbraucherfortschritt aufzudecken. Ein Commit-Fehler beeinträchtigt also nicht die Integrität der Prüfpunkt-Partitions-Offsets von Flink. | 
| commitsSucceeded | – | Die Gesamtzahl erfolgreichen Offset-Commits an Kafka, wenn Offset-Commit und Prüfpunktprüfung aktiviert sind.  | Anwendung, Operator, Aufgabe, Parallelität |  | 
| committedoffsets | – | Die letzten erfolgreich an Kafka übergebenen Offsets für jede Partition. Die Metrik einer bestimmten Partition kann anhand des Themennamens und der Partitions-ID angegeben werden. | Anwendung (für Thema), Parallelität (für) PartitionId |  | 
| records\$1lag\$1max | Anzahl | Die maximale Verzögerung in Bezug auf die Anzahl der Datensätze für jede Partition in diesem Fenster | Anwendung, Operator, Aufgabe, Parallelität |  | 
| bytes\$1consumed\$1rate | Bytes | Die durchschnittliche Anzahl von Bytes, die pro Sekunde für ein Thema verbraucht werden | Anwendung, Operator, Aufgabe, Parallelität |  | 

## Apache Zeppelin-Metriken
<a name="metrics-dimensions-zeppelin"></a>

Gibt für AWS Studio-Notebooks die folgenden Metriken auf Anwendungsebene aus:`KPUs`,,`cpuUtilization`, `heapMemoryUtilization``oldGenerationGCTime`, `oldGenerationGCCount` und. `threadCount` Darüber hinaus werden die in der folgenden Tabelle aufgeführten Metriken auch auf Anwendungsebene ausgegeben.


****  

| Metrik | Einheit | Description | Prometheus-Name | 
| --- | --- | --- | --- | 
| zeppelinCpuUtilization | Prozentsatz | Gesamtprozentsatz der CPU-Auslastung auf dem Apache Zeppelin-Server. | process\$1cpu\$1usage | 
| zeppelinHeapMemoryUtilization | Prozentsatz | Gesamtprozentsatz der Heap-Speicherauslastung für den Apache Zeppelin-Server. | jvm\$1memory\$1used\$1bytes | 
| zeppelinThreadCount | Anzahl | Die Gesamtzahl der vom Apache Zeppelin-Server verwendeten Live-Threads. | jvm\$1threads\$1live\$1threads | 
| zeppelinWaitingJobs | Anzahl | Die Anzahl der Apache Zeppelin-Jobs in der Warteschlange, die auf einen Thread warten. | jetty\$1threads\$1jobs | 
| zeppelinServerUptime | Sekunden | Die Gesamtzeit, in der der Server betriebsbereit war. | process\$1uptime\$1seconds | 

# Metriken anzeigen CloudWatch
<a name="metrics-dimensions-viewing"></a>

Sie können CloudWatch Metriken für Ihre Anwendung über die CloudWatch Amazon-Konsole oder die anzeigen AWS CLI.

**Um Metriken über die CloudWatch Konsole anzuzeigen**

1. Öffnen Sie die CloudWatch Konsole unter [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Wählen Sie im Navigationsbereich **Metrics** (Metriken) aus.

1. Wählen Sie im Bereich „**CloudWatch Metriken nach Kategorie**“ für Managed Service for Apache Flink eine Metrikkategorie aus.

1. Führen Sie im oberen Bereich einen Bildlauf durch, um die vollständige Liste der Metriken anzuzeigen.

**Um Metriken anzuzeigen, verwenden Sie AWS CLI**
+ Geben Sie als Eingabeaufforderung den folgenden Befehl ein.

  ```
  1. aws cloudwatch list-metrics --namespace "AWS/KinesisAnalytics" --region region
  ```

# Legen Sie Berichtsebenen für CloudWatch Kennzahlen fest
<a name="cloudwatch-logs-levels"></a>

Sie können die Ebene der Anwendungsmetriken steuern, die Ihre Anwendung erstellt. Managed Service für Apache Flink unterstützt die folgenden Metrikebenen:
+ **Anwendung:** Die Anwendung meldet für jede Anwendung nur die höchste Stufe an Metriken. Die Metriken von Managed Service für Apache Flink werden standardmäßig auf Anwendungsebene veröffentlicht.
+ **Aufgabe:** Die Anwendung meldet aufgabenspezifische Metrikdimensionen für Metriken, die mit der Berichtsebene Aufgaben-Metrik definiert wurden, wie z. B. die Anzahl der Datensätze pro Sekunde, die in die Anwendung ein- und von ihr ausgehen.
+ **Operator:** Die Anwendung meldet operatorspezifische Metrikdimensionen für Metriken, die mit der Berichtsebene Operator-Metrik definiert wurden, wie z. B. Metriken für jeden Filter- oder Zuordnungsvorgang.
+ **Parallelität:** Die Anwendung erstellt `Task`- und `Operator`–Ebenen-Metriken für jeden Ausführungsthread. Diese Berichtsebene wird wegen übermäßiger Kosten nicht für Anwendungen mit Parallelitätseinstellung über 64 empfohlen. 
**Anmerkung**  
Aufgrund der Menge an Metrikdaten, die der Service generiert, sollten Sie diese Metrikebene nur zur Fehlerbehebung verwenden. Sie können diese Metrikebene nur mit der CLI festlegen. Diese Metrikebene ist in der Konsole nicht verfügbar.

Die Standardebene ist **Anwendung**. Die Anwendung meldet Metriken auf der aktuellen Ebene und allen höheren Ebenen. Wenn die Berichtsebene beispielsweise auf **Operator** gesetzt ist, meldet die Anwendung **Anwendungs**-, **Aufgaben**-, and **Operator**-Metriken.

Sie legen die Berichtsebene für CloudWatch Metriken mithilfe des `MonitoringConfiguration` [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)Aktionsparameters oder des `MonitoringConfigurationUpdate` [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)Aktionsparameters fest. In der folgenden Beispielanforderung für die [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)Aktion wird die Berichtsebene für die CloudWatch Metriken auf **Aufgabe** festgelegt:

```
{
   "ApplicationName": "MyApplication",  
   "CurrentApplicationVersionId": 4,
   "ApplicationConfigurationUpdate": { 
      "FlinkApplicationConfigurationUpdate": { 
         "MonitoringConfigurationUpdate": { 
            "ConfigurationTypeUpdate": "CUSTOM",
            "MetricsLevelUpdate": "TASK"
         }
      }
   }
}
```

Sie können die Protokollierungsebene auch mithilfe des `LogLevel`-Parameters der Aktion [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) oder des `LogLevelUpdate`-Parameters der Aktion [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) konfigurieren. Sie können die folgenden Protokollebenen verwenden:
+ `ERROR`: Protokolliert potenziell behebbare Fehlerereignisse.
+ `WARN`: Protokolliert Warnereignisse, die zu einem Fehler führen könnten.
+ `INFO`: Protokolliert Informationsereignisse.
+ `DEBUG`: Protokolliert allgemeine Debugging-Ereignisse. 

Weitere Informationen zu Log4j-Protokollierungsebenen finden Sie unter [Benutzerdefinierte Protokollebenen](https://logging.apache.org/log4j/2.x/manual/customloglevels.html) in der [Apache Log4j](https://logging.apache.org/log4j/2.x/)-Dokumentation.

# Verwenden Sie benutzerdefinierte Metriken mit Amazon Managed Service für Apache Flink
<a name="monitoring-metrics-custom"></a>

Managed Service für Apache Flink stellt 19 Metriken zur Verfügung CloudWatch, darunter Metriken für Ressourcennutzung und Durchsatz. Darüber hinaus können Sie Ihre eigenen Metriken erstellen, um anwendungsspezifische Daten zu verfolgen, z. B. Verarbeitungsereignisse oder den Zugriff auf externe Ressourcen.

**Topics**
+ [Funktionsweise](#monitoring-metrics-custom-howitworks)
+ [Sehen Sie sich Beispiele für die Erstellung einer Mapping-Klasse an](#monitoring-metrics-custom-examples)
+ [Benutzerdefinierte Metriken anzeigen](#monitoring-metrics-custom-examples-viewing)

## Funktionsweise
<a name="monitoring-metrics-custom-howitworks"></a>

Benutzerdefinierte Metriken in Managed Service für Apache Flink verwenden das Apache Flink-Metriksystem. Apache Flink-Metriken haben die folgenden Attribute:
+ **Typ:** Der Typ einer Metrik beschreibt, wie Daten gemessen und gemeldet werden. Zu den verfügbaren Apache Flink-Metriktypen gehören Anzahl, Diagramm, Histogramm und Messung. Weitere Informationen zu den Metriktypen von Apache Flink finden Sie unter [Metriktypen.](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html#metric-types)
**Anmerkung**  
AWS CloudWatch Metrics unterstützt den Metriktyp Histogramm Apache Flink nicht. CloudWatch kann nur Apache Flink-Metriken der Typen Count, Gauge und Meter anzeigen.
+ **Umfang: Der Geltungsbereich** einer Metrik besteht aus ihrer Kennung und einer Reihe von Schlüssel-Wert-Paaren, die angeben, wie die Metrik gemeldet werden soll. CloudWatch Die Kennung einer Metrik enthält die folgenden Elemente:
  + Einen Systembereich, der die Ebene angibt, auf der die Metrik gemeldet wird (z. B. Operator).
  + Einen Benutzerbereich, der Attribute wie Benutzervariablen oder Metrikgruppennamen definiert. Diese Attribute werden mit [https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-java.lang.String-](https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-java.lang.String-) oder [https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-](https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-) definiert.

  Weitere Informationen zu Metrikbereichen finden Sie unter [Bereich](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html#scope).

Weitere Informationen zu Apache Flink-Metriken finden Sie unter [Metriken](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html) in der [Apache Flink-Dokumentation](https://nightlies.apache.org/flink/flink-docs-release-1.15/).

Um eine benutzerdefinierte Metrik in Ihrem Managed Service für Apache Flink zu erstellen, können Sie von jeder Benutzerfunktion aus, die `RichFunction` erweitert, durch Aufrufen von [https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/api/common/functions/RuntimeContext.html#getMetricGroup--](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/api/common/functions/RuntimeContext.html#getMetricGroup--) auf das Apache Flink-Metriksystem zugreifen. Diese Methode gibt ein [MetricGroup](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/metrics/MetricGroup.html)Objekt zurück, mit dem Sie benutzerdefinierte Metriken erstellen und registrieren können. Managed Service for Apache Flink meldet alle Metriken, die mit dem Gruppenschlüssel `KinesisAnalytics` für erstellt wurden. CloudWatch Benutzerdefinierte Metriken, die Sie definieren, weisen folgende Merkmale auf:
+ Ihre benutzerdefinierte Metrik hat einen Metriknamen und einen Gruppennamen. Diese Namen müssen gemäß den Benennungsregeln von [Prometheus](https://prometheus.io/docs/instrumenting/writing_exporters/#naming) aus alphanumerischen Zeichen bestehen.
+ Attribute, die Sie im Benutzerbereich definieren (mit Ausnahme der `KinesisAnalytics` Metrikgruppe), werden als Dimensionen veröffentlicht. CloudWatch 
+ Benutzerdefinierte Metriken werden standardmäßig auf der `Application`-Ebene veröffentlicht.
+ Dimensionen (Aufgabe/Operator/Parallelismus) werden der Metrik auf der Grundlage der Überwachungsebene der Anwendung hinzugefügt. Sie legen die Überwachungsebene der Anwendung mithilfe des [MonitoringConfiguration](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfiguration.html)Aktionsparameters oder des [CreateApplication[MonitoringConfigurationUpdate](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html)](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)Aktionsparameters oder der [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)Aktion fest.

## Sehen Sie sich Beispiele für die Erstellung einer Mapping-Klasse an
<a name="monitoring-metrics-custom-examples"></a>

Die folgenden Codebeispiele zeigen, wie Sie eine Mapping-Klasse erstellen, die eine benutzerdefinierte Metrik erstellt und inkrementiert, und wie Sie die Mapping-Klasse in Ihrer Anwendung implementieren, indem Sie sie einem `DataStream` Objekt hinzufügen.

### Benutzerdefinierte Metrik für die Anzahl der Datensätze
<a name="monitoring-metrics-custom-examples-recordcount"></a>

Das folgende Codebeispiel zeigt, wie eine Mapping-Klasse erstellt wird, die eine Metrik erstellt, die Datensätze in einem Datenstrom zählt (dieselbe Funktionalität wie die `numRecordsIn`-Metrik):

```
    private static class NoOpMapperFunction extends RichMapFunction<String, String> {
        private transient int valueToExpose = 0;
        private final String customMetricName;
 
        public NoOpMapperFunction(final String customMetricName) {
            this.customMetricName = customMetricName;
        }
 
        @Override
        public void open(Configuration config) {
            getRuntimeContext().getMetricGroup()
                    .addGroup("KinesisAnalytics")
                    .addGroup("Program", "RecordCountApplication")
                    .addGroup("NoOpMapperFunction")
                    .gauge(customMetricName, (Gauge<Integer>) () -> valueToExpose);
        }
 
        @Override
        public String map(String value) throws Exception {
            valueToExpose++;
            return value;
        }
    }
```

Im vorherigen Beispiel wird die `valueToExpose`-Variable für jeden Datensatz, den die Anwendung verarbeitet, inkrementiert. 

Nachdem Sie Ihre Mapping-Klasse definiert haben, erstellen Sie einen anwendungsinternen Stream, der die Map implementiert:

```
DataStream<String> noopMapperFunctionAfterFilter =
    kinesisProcessed.map(new NoOpMapperFunction("FilteredRecords"));
```

Den vollständigen Code für diese Anwendung finden Sie unter [Datensatzanzahl benutzerdefinierte Metrikanwendung](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/CustomMetrics/RecordCount).

### Benutzerdefinierte Metrik für die Anzahl der Wörter
<a name="monitoring-metrics-custom-examples-wordcount"></a>

Das folgende Codebeispiel zeigt, wie eine Mapping-Klasse erstellt wird, die eine Metrik erstellt, die Wörter in einem Datenstrom zählt:

```
private static final class Tokenizer extends RichFlatMapFunction<String, Tuple2<String, Integer>> {
     
            private transient Counter counter;
     
            @Override
            public void open(Configuration config) {
                this.counter = getRuntimeContext().getMetricGroup()
                        .addGroup("KinesisAnalytics")
                        .addGroup("Service", "WordCountApplication")
                        .addGroup("Tokenizer")
                        .counter("TotalWords");
            }
     
            @Override
            public void flatMap(String value, Collector<Tuple2<String, Integer>>out) {
                // normalize and split the line
                String[] tokens = value.toLowerCase().split("\\W+");
     
                // emit the pairs
                for (String token : tokens) {
                    if (token.length() > 0) {
                        counter.inc();
                        out.collect(new Tuple2<>(token, 1));
                    }
                }
            }
        }
```

Im vorherigen Beispiel wird die `counter`-Variable für jedes Wort, das die Anwendung verarbeitet, inkrementiert. 

Nachdem Sie Ihre Mapping-Klasse definiert haben, erstellen Sie einen anwendungsinternen Stream, der die Map implementiert:

```
// Split up the lines in pairs (2-tuples) containing: (word,1), and
// group by the tuple field "0" and sum up tuple field "1"
DataStream<Tuple2<String, Integer>> wordCountStream = input.flatMap(new Tokenizer()).keyBy(0).sum(1);
     
// Serialize the tuple to string format, and publish the output to kinesis sink
wordCountStream.map(tuple -> tuple.toString()).addSink(createSinkFromStaticConfig());
```

Den vollständigen Code für diese Anwendung finden Sie unter [Wortanzahl benutzerdefinierte Metrikanwendung](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/CustomMetrics/WordCount).

## Benutzerdefinierte Metriken anzeigen
<a name="monitoring-metrics-custom-examples-viewing"></a>

Benutzerdefinierte Metriken für Ihre Anwendung werden in der CloudWatch Metrikkonsole im **AWS/KinesisAnalytics**Dashboard unter der Metrikgruppe **Anwendung** angezeigt. 

# Verwenden Sie CloudWatch Alarme mit Amazon Managed Service für Apache Flink
<a name="monitoring-metrics-alarms"></a>

Mithilfe von Amazon CloudWatch Metric Alarms beobachten Sie eine CloudWatch Metrik über einen von Ihnen angegebenen Zeitraum. Der Alarm führt eine oder mehrere Aktionen durch, die vom Wert der Metrik oder des Ausdrucks im Vergleich zu einem Schwellenwert in einer Reihe von Zeiträumen abhängt. Eine Aktion könnte beispielsweise der Versand einer Benachrichtigung an ein Amazon Simple Notification Service (Amazon SNS)-Thema sein. 

Weitere Informationen zu CloudWatch Alarmen finden Sie unter [Amazon CloudWatch Alarms verwenden](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html).

## Lesen Sie die empfohlenen Alarme
<a name="monitoring-metrics-alarms-recommended"></a>

Dieser Abschnitt enthält die empfohlenen Alarme für die Überwachung von Managed Service für Apache Flink-Anwendungen.

Die Tabelle beschreibt die empfohlenen Alarme und enthält die folgenden Spalten:
+ **Metrikausdruck:** Die Metrik oder der Metrikausdruck, der anhand des Schwellenwerts getestet werden soll.
+ **Statistik:** Die Statistik, die zur Überprüfung der Metrik verwendet wird, z. B. **Durchschnitt**.
+ **Schwellenwert:** Für die Verwendung dieses Alarms müssen Sie einen Schwellenwert festlegen, der die Grenze der erwarteten Anwendungsleistung definiert. Sie müssen diesen Schwellenwert ermitteln, indem Sie Ihre Anwendung unter normalen Bedingungen überwachen.
+ **Beschreibung:** Ursachen, die diesen Alarm auslösen könnten, und mögliche Lösungen für diesen Zustand.


| Metrikausdruck | Statistik | Threshold | Description | 
| --- |--- |--- |--- |
| downtime> 0 | Durchschnitt | 0 |  Eine Ausfallzeit von mehr als Null bedeutet, dass die Anwendung ausgefallen ist. Wenn der Wert größer als 0 ist, verarbeitet die Anwendung keine Daten. Für alle Anwendungen empfohlen. Die Downtime Metrik misst die Dauer eines Ausfalls. Eine Ausfallzeit von mehr als Null bedeutet, dass die Anwendung ausgefallen ist. Informationen zur Problembehandlung finden Sie unter[Die Anwendung wird neu gestartet](troubleshooting-rt-restarts.md). | 
| RATE (numberOfFailedCheckpoints)> 0 | Durchschnitt | 0 | Diese Metrik zählt die Anzahl der fehlgeschlagenen Checkpoints seit dem Start der Anwendung. Je nach Anwendung kann es toleriert werden, dass Prüfpunkte gelegentlich fehlschlagen. Wenn Prüfpunkte jedoch regelmäßig ausfallen, ist die Anwendung wahrscheinlich fehlerhaft und benötigt weitere Aufmerksamkeit. Wir empfehlen, RATE (numberOfFailedCheckpoints) so zu überwachen, dass der Alarm auf dem Gradienten und nicht auf absoluten Werten basiert. Für alle Anwendungen empfohlen. Verwenden Sie diese Metrik, um den Zustand der Anwendung und den Fortschritt der Checkpoints zu überwachen. Die Anwendung speichert Statusdaten an Checkpoints, wenn sie fehlerfrei ist. Checkpointing kann aufgrund von Timeouts fehlschlagen, wenn die Anwendung bei der Verarbeitung der Eingabedaten keine Fortschritte macht. Informationen zur Problembehandlung finden Sie unter. [Beim Checkpointing kommt es zu einer Zeitüberschreitung](troubleshooting-chk-timeout.md) | 
| Operator.numRecordsOutPerSecond< Schwellenwert | Durchschnitt | Die Mindestanzahl von Datensätzen, die unter normalen Bedingungen von der Anwendung gesendet werden.  | Für alle Anwendungen empfohlen. Ein Unterschreiten dieses Schwellenwerts kann darauf hindeuten, dass die Anwendung bei den Eingabedaten nicht die erwarteten Fortschritte erzielt. Informationen zur Problembehandlung finden Sie unter[Der Durchsatz ist zu langsam](troubleshooting-rt-throughput.md). | 
| records\$1lag\$1max\$1millisbehindLatest> Schwellenwert | Maximum | Die maximal zu erwartende Latenz unter normalen Bedingungen. | Wenn die Anwendung viel Kinesis oder Kafka verbraucht, geben diese Metriken an, ob die Anwendung hinterherhinkt und skaliert werden muss, um mit der aktuellen Auslastung Schritt zu halten. Dies ist eine gute generische Metrik, die für alle Arten von Anwendungen leicht nachzuverfolgen ist. Sie kann jedoch nur für reaktive Skalierung verwendet werden, d. h. wenn die Anwendung bereits ins Hintertreffen geraten ist. Für alle Anwendungen empfohlen. Verwenden Sie die records\$1lag\$1max Metrik für eine Kafka-Quelle oder die millisbehindLatest für eine Kinesis-Stream-Quelle. Eine Überschreitung dieses Schwellenwerts kann darauf hindeuten, dass die Anwendung bei den Eingabedaten nicht die erwarteten Fortschritte erzielt. Informationen zur Problembehandlung finden Sie unter[Der Durchsatz ist zu langsam](troubleshooting-rt-throughput.md). | 
| lastCheckpointDuration> Schwellenwert | Maximum | Die maximal zu erwartende Checkpoint-Dauer unter normalen Bedingungen. | Überwacht, wie viele Daten im Status gespeichert sind und wie lange es dauert, bis ein Checkpoint abgeschlossen ist. Wenn die Anzahl der Prüfpunkte zunimmt oder lange dauert, verbringt die Anwendung kontinuierlich Zeit mit Prüfpunkten und hat weniger Zyklen für die eigentliche Verarbeitung. An manchen Stellen können Prüfpunkte zu groß werden oder so lange dauern, dass sie ausfallen. Neben der Überwachung absoluter Werte sollten Kunden auch erwägen, die Änderungsrate mit RATE(lastCheckpointSize) und RATE(lastCheckpointDuration) zu überwachen. Wenn der Wert lastCheckpointDuration kontinuierlich ansteigt, kann ein Überschreiten dieses Schwellenwerts darauf hinweisen, dass die Anwendung bei den Eingabedaten nicht die erwarteten Fortschritte erzielt oder dass Probleme mit dem Zustand der Anwendung vorliegen, wie z. B. Gegendruck. Informationen zur Problembehandlung finden Sie unter[Unbegrenztes Staatswachstum](troubleshooting-rt-stateleaks.md). | 
| lastCheckpointSize> Schwellenwert | Maximum | Die maximal zu erwartende Checkpoint-Größe unter normalen Bedingungen. | Überwacht, wie viele Daten im Status gespeichert sind und wie lange es dauert, bis ein Checkpoint abgeschlossen ist. Wenn die Anzahl der Prüfpunkte zunimmt oder lange dauert, verbringt die Anwendung kontinuierlich Zeit mit Prüfpunkten und hat weniger Zyklen für die eigentliche Verarbeitung. An manchen Stellen können Prüfpunkte zu groß werden oder so lange dauern, dass sie ausfallen. Neben der Überwachung absoluter Werte sollten Kunden auch erwägen, die Änderungsrate mit RATE(lastCheckpointSize) und RATE(lastCheckpointDuration) zu überwachen. Wenn der Wert lastCheckpointSize kontinuierlich ansteigt, kann ein Überschreiten dieses Schwellenwerts darauf hinweisen, dass die Anwendung Zustandsdaten sammelt. Wenn die Zustandsdaten zu groß werden, kann der Anwendung bei der Wiederherstellung von einem Checkpoint der Speicherplatz ausgehen, oder die Wiederherstellung von einem Checkpoint kann zu lange dauern. Informationen zur Problembehandlung finden Sie unter. [Unbegrenztes Staatswachstum](troubleshooting-rt-stateleaks.md) | 
| heapMemoryUtilization> Schwellenwert | Maximum | Dies gibt einen guten Hinweis auf die allgemeine Ressourcenauslastung der Anwendung und kann für eine proaktive Skalierung verwendet werden, sofern die Anwendung nicht I/O gebunden ist. Die maximale heapMemoryUtilization Größe, die unter normalen Bedingungen erwartet wird, mit einem empfohlenen Wert von 90 Prozent. | Sie können diese Metrik verwenden, um die maximale Speicherauslastung von Task-Managern in der gesamten Anwendung zu überwachen. Wenn die Anwendung diesen Schwellenwert erreicht, müssen Sie mehr Ressourcen bereitstellen. Sie tun dies, indem Sie die automatische Skalierung aktivieren oder die Anwendungsparallelität erhöhen. Weitere Informationen zur Erhöhung der Ressourcen finden Sie unter. [Implementieren Sie Anwendungsskalierung](how-scaling.md) | 
| cpuUtilization> Schwellenwert | Maximum | Dies gibt einen guten Hinweis auf die allgemeine Ressourcenauslastung der Anwendung und kann für eine proaktive Skalierung verwendet werden, sofern die Anwendung nicht I/O gebunden ist. Die maximale cpuUtilization Größe, die unter normalen Bedingungen erwartet wird, mit einem empfohlenen Wert von 80 Prozent. | Sie können diese Metrik verwenden, um die maximale CPU-Auslastung von Task-Managern in der gesamten Anwendung zu überwachen. Wenn die Anwendung diesen Schwellenwert erreicht, müssen Sie mehr Ressourcen bereitstellen. Dazu aktivieren Sie die automatische Skalierung oder erhöhen die Anwendungsparallelität. Weitere Informationen zur Erhöhung der Ressourcen finden Sie unter. [Implementieren Sie Anwendungsskalierung](how-scaling.md) | 
| threadsCount> Schwellenwert | Maximum | Die maximal zu erwartende threadsCount Größe unter normalen Bedingungen. | Sie können diese Metrik verwenden, um in Task-Managern in der gesamten Anwendung nach Thread-Leaks Ausschau zu halten. Wenn diese Metrik diesen Schwellenwert erreicht, überprüfen Sie Ihren Anwendungscode auf Threads, die erstellt wurden, ohne geschlossen zu werden. | 
| (oldGarbageCollectionTime \$1 100)/60\$1000 over 1 min period')> Schwellenwert | Maximum | Die maximale erwartete oldGarbageCollectionTime Dauer. Wir empfehlen, einen Schwellenwert so festzulegen, dass die typische Garbage-Collection-Zeit 60 Prozent des angegebenen Schwellenwerts beträgt. Der richtige Schwellenwert für Ihre Anwendung kann jedoch variieren. | Wenn diese Kennzahl kontinuierlich steigt, kann dies darauf hindeuten, dass in den Task-Managern der gesamten Anwendung ein Speicherverlust vorliegt. | 
| RATE(oldGarbageCollectionCount) > Schwellenwert | Maximum | Das oldGarbageCollectionCount unter normalen Bedingungen erwartete Maximum. Der richtige Schwellenwert für Ihre Anwendung wird variieren. | Wenn diese Kennzahl kontinuierlich steigt, kann dies darauf hindeuten, dass in den Task-Managern der gesamten Anwendung ein Speicherverlust vorliegt. | 
| Operator.currentOutputWatermark - Operator.currentInputWatermark > Schwellenwert | Minimum | Der minimale zu erwartende Anstieg des Wasserzeichens unter normalen Bedingungen. Der richtige Schwellenwert für Ihre Anwendung wird variieren. | Wenn diese Kennzahl kontinuierlich steigt, kann dies darauf hindeuten, dass entweder die Anwendung immer ältere Ereignisse verarbeitet oder dass eine vorgelagerte Unteraufgabe seit immer längerer Zeit kein Wasserzeichen mehr gesendet hat. | 

# Schreiben Sie benutzerdefinierte Nachrichten in CloudWatch Logs
<a name="cloudwatch-logs-writing"></a>

Sie können benutzerdefinierte Nachrichten in das Protokoll Ihrer Managed Service for Apache Flink-Anwendung schreiben. CloudWatch Sie tun dies, indem Sie die Apache [https://logging.apache.org/log4j/](https://logging.apache.org/log4j/)-Bibliothek oder die [https://www.slf4j.org/](https://www.slf4j.org/)-Bibliothek verwenden.

**Topics**
+ [Schreiben Sie mit CloudWatch Log4J in Protokolle](#cloudwatch-logs-writing-log4j)
+ [Schreiben Sie mit J in CloudWatch Logs SLF4](#cloudwatch-logs-writing-slf4j)

## Schreiben Sie mit CloudWatch Log4J in Protokolle
<a name="cloudwatch-logs-writing-log4j"></a>

1. Fügen Sie der `pom.xml`-Datei Ihrer Anwendung die folgenden Abhängigkeiten hinzu:

   ```
   <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
       <version>2.6.1</version>
   </dependency>
   <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
       <version>2.6.1</version>
   </dependency>
   ```

1. Fügen Sie das Objekt aus der Bibliothek hinzu:

   ```
   import org.apache.logging.log4j.Logger;
   ```

1. Instanziieren Sie das `Logger`-Objekt und übergeben Sie Ihre Anwendungsklasse:

   ```
   private static final Logger log = LogManager.getLogger.getLogger(YourApplicationClass.class);
   ```

1. Schreiben Sie mit `log.info` in das Protokoll. Eine große Anzahl von Nachrichten wird in das Anwendungsprotokoll geschrieben. Verwenden Sie die `INFO`-Anwendungsprotokollebene, damit Ihre benutzerdefinierten Nachrichten einfacher gefiltert werden können.

   ```
   log.info("This message will be written to the application's CloudWatch log");
   ```

Die Anwendung schreibt einen Datensatz in das Protokoll mit einer Meldung wie der folgenden:

```
{
  "locationInformation": "com.amazonaws.services.managed-flink.StreamingJob.main(StreamingJob.java:95)", 
  "logger": "com.amazonaws.services.managed-flink.StreamingJob", 
  "message": "This message will be written to the application's CloudWatch log", 
  "threadName": "Flink-DispatcherRestEndpoint-thread-2", 
  "applicationARN": "arn:aws:kinesisanalyticsus-east-1:123456789012:application/test", 
  "applicationVersionId": "1", "messageSchemaVersion": "1", 
  "messageType": "INFO" 
}
```

## Schreiben Sie mit J in CloudWatch Logs SLF4
<a name="cloudwatch-logs-writing-slf4j"></a>

1. Fügen Sie der `pom.xml`-Datei Ihrer Anwendung die folgende Abhängigkeit hinzu:

   ```
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>1.7.7</version>
       <scope>runtime</scope>
   </dependency>
   ```

1. Fügen Sie die Objekte aus der Bibliothek hinzu:

   ```
   import org.slf4j.Logger;
   import org.slf4j.LoggerFactory;
   ```

1. Instanziieren Sie das `Logger`-Objekt und übergeben Sie Ihre Anwendungsklasse:

   ```
   private static final Logger log = LoggerFactory.getLogger(YourApplicationClass.class);
   ```

1. Schreiben Sie mit `log.info` in das Protokoll. Eine große Anzahl von Nachrichten wird in das Anwendungsprotokoll geschrieben. Verwenden Sie die `INFO`-Anwendungsprotokollebene, damit Ihre benutzerdefinierten Nachrichten einfacher gefiltert werden können.

   ```
   log.info("This message will be written to the application's CloudWatch log");
   ```

Die Anwendung schreibt einen Datensatz in das Protokoll mit einer Meldung wie der folgenden:

```
{
  "locationInformation": "com.amazonaws.services.managed-flink.StreamingJob.main(StreamingJob.java:95)", 
  "logger": "com.amazonaws.services.managed-flink.StreamingJob", 
  "message": "This message will be written to the application's CloudWatch log", 
  "threadName": "Flink-DispatcherRestEndpoint-thread-2", 
  "applicationARN": "arn:aws:kinesisanalyticsus-east-1:123456789012:application/test", 
  "applicationVersionId": "1", "messageSchemaVersion": "1", 
  "messageType": "INFO" 
}
```

# Log Managed Service für Apache Flink API-Aufrufe mit AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

Managed Service for Apache Flink ist in einen Dienst integriert AWS CloudTrail, der eine Aufzeichnung der Aktionen bereitstellt, die von einem Benutzer, einer Rolle oder einem AWS Dienst in Managed Service für Apache Flink ausgeführt wurden. CloudTrail erfasst alle API-Aufrufe für Managed Service for Apache Flink als Ereignisse. Zu den erfassten Aufrufen gehören Aufrufe von der Konsole Managed Service für Apache Flink und Codeaufträge an Managed Service für Apache-Flink-API-Operationen. Wenn Sie einen Trail erstellen, können Sie die kontinuierliche Bereitstellung von CloudTrail Ereignissen an einen Amazon S3 S3-Bucket aktivieren, einschließlich Ereignissen für Managed Service for Apache Flink. Wenn Sie keinen Trail konfigurieren, können Sie die neuesten Ereignisse trotzdem in der CloudTrail Konsole im **Ereignisverlauf** anzeigen. Anhand der von gesammelten Informationen können Sie die Anfrage CloudTrail, die an Managed Service for Apache Flink gestellt wurde, die IP-Adresse, von der aus die Anfrage gestellt wurde, wer die Anfrage gestellt hat, wann sie gestellt wurde, und weitere Details ermitteln. 

Weitere Informationen CloudTrail dazu finden Sie im [AWS CloudTrail Benutzerhandbuch](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

## Informationen zu Managed Service für Apache Flink finden Sie unter CloudTrail
<a name="service-name-info-in-cloudtrail"></a>

CloudTrail ist in Ihrem AWS Konto aktiviert, wenn Sie das Konto erstellen. Wenn in Managed Service für Apache Flink eine Aktivität auftritt, wird diese Aktivität zusammen mit anderen AWS Dienstereignissen im CloudTrail **Ereignisverlauf in einem Ereignis** aufgezeichnet. Sie können aktuelle Ereignisse in Ihrem AWS Konto anzeigen, suchen und herunterladen. Weitere Informationen finden Sie unter [Ereignisse mit CloudTrail Ereignisverlauf anzeigen](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html). 

Für eine fortlaufende Aufzeichnung der Ereignisse in Ihrem AWS Konto, einschließlich der Ereignisse für Managed Service for Apache Flink, erstellen Sie einen Trail. Ein *Trail* ermöglicht CloudTrail die Übermittlung von Protokolldateien an einen Amazon S3 S3-Bucket. Wenn Sie einen Trail in der Konsole erstellen, gilt der Trail standardmäßig für alle AWS Regionen. Der Trail protokolliert Ereignisse aus allen Regionen der AWS Partition und übermittelt die Protokolldateien an den von Ihnen angegebenen Amazon S3 S3-Bucket. Darüber hinaus können Sie andere AWS Dienste konfigurieren, um die in den CloudTrail Protokollen gesammelten Ereignisdaten weiter zu analysieren und darauf zu reagieren. Weitere Informationen finden Sie hier: 
+ [Übersicht zum Erstellen eines Trails](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail Unterstützte Dienste und Integrationen](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [Konfiguration von Amazon SNS SNS-Benachrichtigungen für CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [Empfangen von CloudTrail Protokolldateien aus mehreren Regionen](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) und [Empfangen von CloudTrail Protokolldateien von mehreren Konten](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Alle Managed Service for Apache Flink-Aktionen werden von der [API-Referenz zu Managed Service for Apache Flink](/managed-flink/latest/apiv2/Welcome.html) protokolliert CloudTrail und sind in dieser Dokumentation dokumentiert. Beispielsweise generieren Aufrufe der ` [UpdateApplication](/managed-flink/latest/apiv2/API_UpdateApplication.html)` Aktionen `[CreateApplication](/managed-flink/latest/apiv2/API_CreateApplication.html)` und Einträge in den CloudTrail Protokolldateien. 

Jeder Ereignis- oder Protokolleintrag enthält Informationen zu dem Benutzer, der die Anforderung generiert hat. Die Identitätsinformationen unterstützen Sie bei der Ermittlung der folgenden Punkte: 
+ Ob die Anfrage mit Root- oder AWS Identity and Access Management (IAM-) Benutzeranmeldedaten gestellt wurde.
+ Gibt an, ob die Anforderung mit temporären Sicherheitsanmeldeinformationen für eine Rolle oder einen Verbundbenutzer gesendet wurde.
+ Ob die Anfrage von einem anderen AWS Dienst gestellt wurde.

Weitere Informationen finden Sie unter [CloudTrail userIdentity-Element](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

## Verstehen Sie die Einträge in der Protokolldatei von Managed Service for Apache Flink
<a name="understanding-service-name-entries"></a>

Ein Trail ist eine Konfiguration, die die Übertragung von Ereignissen als Protokolldateien an einen von Ihnen angegebenen Amazon S3 S3-Bucket ermöglicht. CloudTrail Protokolldateien enthalten einen oder mehrere Protokolleinträge. Ein Ereignis stellt eine einzelne Anforderung aus einer beliebigen Quelle dar und enthält Informationen über die angeforderte Aktion, Datum und Uhrzeit der Aktion, Anforderungsparameter usw. CloudTrail Protokolldateien sind kein geordneter Stack-Trace der öffentlichen API-Aufrufe, sodass sie nicht in einer bestimmten Reihenfolge angezeigt werden. 

Das folgende Beispiel zeigt einen CloudTrail Protokolleintrag, der die [DescribeApplication](/managed-flink/latest/apiv2/API_DescribeApplication.html)Aktionen [AddApplicationCloudWatchLoggingOption](/managed-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html)und demonstriert.

```
{
    "Records": [
        {
            "eventVersion": "1.05",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::012345678910:user/Alice",
                "accountId": "012345678910",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2019-03-07T01:19:47Z",
            "eventSource": "kinesisanlaytics.amazonaws.com",
            "eventName": "AddApplicationCloudWatchLoggingOption",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "applicationName": "cloudtrail-test",
                "currentApplicationVersionId": 1,
                "cloudWatchLoggingOption": {
                    "logStreamARN": "arn:aws:logs:us-east-1:012345678910:log-group:cloudtrail-test:log-stream:flink-cloudwatch"
                }
            },
            "responseElements": {
                "cloudWatchLoggingOptionDescriptions": [
                    {
                        "cloudWatchLoggingOptionId": "2.1",
                        "logStreamARN": "arn:aws:logs:us-east-1:012345678910:log-group:cloudtrail-test:log-stream:flink-cloudwatch"
                    }
                ],
                "applicationVersionId": 2,
                "applicationARN": "arn:aws:kinesisanalyticsus-east-1:012345678910:application/cloudtrail-test"
            },
            "requestID": "18dfb315-4077-11e9-afd3-67f7af21e34f",
            "eventID": "d3c9e467-db1d-4cab-a628-c21258385124",
            "eventType": "AwsApiCall",
            "apiVersion": "2018-05-23",
            "recipientAccountId": "012345678910"
        },
        {
            "eventVersion": "1.05",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::012345678910:user/Alice",
                "accountId": "012345678910",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2019-03-12T02:40:48Z",
            "eventSource": "kinesisanlaytics.amazonaws.com",
            "eventName": "DescribeApplication",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "applicationName": "sample-app"
            },
            "responseElements": null,
            "requestID": "3e82dc3e-4470-11e9-9d01-e789c4e9a3ca",
            "eventID": "90ffe8e4-9e47-48c9-84e1-4f2d427d98a5",
            "eventType": "AwsApiCall",
            "apiVersion": "2018-05-23",
            "recipientAccountId": "012345678910"
        }
    ]
}
```