Vorgänge mit hoher Kardinalität verwalten
Application Signals enthält Einstellungen im CloudWatch-Agenten, mit denen Sie die Kardinalität Ihrer Vorgänge verwalten und den Metrikexport verwalten können, um die Kosten zu optimieren. Standardmäßig wird die Metrikbegrenzungsfunktion aktiv, wenn die Anzahl der unterschiedlichen Vorgänge für einen Service im Laufe der Zeit den Standardschwellenwert von 500 überschreitet. Sie können das Verhalten anpassen, indem Sie die Konfigurationseinstellungen anpassen.
Feststellen, ob die Metrikbegrenzung aktiviert ist
Sie können die folgenden Methoden verwenden, um herauszufinden, ob eine Standard-Metrikbegrenzung aktiv ist. Ist das der Fall, sollten Sie eine Optimierung der Kardinalitätskontrolle in Erwägung ziehen, indem Sie den Schritten im nächsten Abschnitt folgen.
Wählen Sie in der CloudWatch-Konsole Application Signals, Services aus. Wenn Sie einen Vorgang mit dem Namen AllOtherOperations oder eine RemoteOperation mit dem Namen AllOtherRemoteOperations sehen, erfolgt eine Metrikbegrenzung.
Wenn von Application Signals erfasste Metriken den Wert
AllOtherOperationsfür ihreOperation-Dimension haben, erfolgt eine Metrikbegrenzung.Wenn von Application Signals erfasste Metriken den Wert
AllOtherRemoteOperationsfür ihreRemoteOperation-Dimension haben, erfolgt eine Metrikbegrenzung.
Optimieren der Kardinalitätskontrolle
Um Ihre Kardinalitätskontrolle zu optimieren, können Sie Folgendes tun:
Erstellen Sie benutzerdefinierte Regeln, um Vorgänge zu aggregieren.
Konfigurieren Sie Ihre Richtlinie zur Metrikbegrenzung.
Erstellen Sie benutzerdefinierte Regeln, um Vorgänge zu aggregieren
Vorgänge mit hoher Kardinalität können manchmal durch unangemessene Einzelwerte verursacht werden, die aus dem Kontext extrahiert wurden. Beispielsweise kann das Senden von HTTP/S-Anforderungen, die Benutzer-IDs oder Sitzungs-IDs im Pfad enthalten, zu Hunderten von unterschiedlichen Vorgängen führen. Um solche Probleme zu vermeiden, empfehlen wir Ihnen, den CloudWatch-Agenten mit Anpassungsregeln zu konfigurieren, um diese Vorgänge umzuformulieren.
In Fällen, in denen die Generierung zahlreicher verschiedener Metriken durch einzelne RemoteOperation-Aufrufe, z. B. PUT /api/customer/owners/123, PUT /api/customer/owners/456 und ähnliche Anfragen, stark zunimmt, empfehlen wir, diese Vorgänge in einem einzigen RemoteOperation zu konsolidieren. Ein Ansatz besteht insbesondere darin, alle RemoteOperation-Aufrufe, die mit PUT /api/customer/owners/ beginnen, auf ein einheitliches Format zu standardisieren, speziell PUT /api/customer/owners/{ownerId}. Das folgende Beispiel illustriert dies. Weitere Informationen zu anderen Anpassungsregeln finden Sie unter CloudWatch Application Signals aktivieren.
{ "logs":{ "metrics_collected":{ "application_signals":{ "rules":[ { "selectors":[ { "dimension":"RemoteOperation", "match":"PUT /api/customer/owners/*" } ], "replacements":[ { "target_dimension":"RemoteOperation", "value":"PUT /api/customer/owners/{ownerId}" } ], "action":"replace" } ] } } } }
In anderen Fällen wurden Metriken mit hoher Kardinalität möglicherweise zu AllOtherRemoteOperations aggregiert, und es ist möglicherweise unklar, welche spezifischen Metriken enthalten sind. Der CloudWatch-Agent kann die unterbrochenen Vorgänge protokollieren. Um unterbrochene Vorgänge zu identifizieren, verwenden Sie die Konfiguration im folgenden Beispiel, um die Protokollierung zu aktivieren, bis das Problem erneut auftritt. Untersuchen Sie dann die CloudWatch-Agent-Protokolle (auf die über Container stdout oder EC2-Protokolldateien zugegriffen werden kann) und suchen Sie nach dem Schlüsselwort drop metric data.
{ "agent": { "config": { "agent": { "debug": true }, "traces": { "traces_collected": { "application_signals": { } } }, "logs": { "metrics_collected": { "application_signals": { "limiter": { "log_dropped_metrics": true } } } } } } }
Erstellen Sie Ihre Richtlinie zur Metrikbegrenzung
Wenn die Standardkonfiguration für die Metrikbegrenzung die Kardinalität für Ihren Service nicht berücksichtigt, können Sie die Konfiguration des Metrikbegrenzers anpassen. Fügen Sie hierzu einen limiter-Abschnitt im logs/metrics_collected/application_signals-Abschnitt der CloudWatch-Agent-Konfigurationsdatei hinzu.
Im folgenden Beispiel wird der Schwellenwert für die Metrikbegrenzung von 500 verschiedenen Metriken auf 100 gesenkt.
{ "logs": { "metrics_collected": { "application_signals": { "limiter": { "drop_threshold": 100 } } } } }