Benutzerdefinierte Metriken mit Application Signals
Um die Anwendungsleistung und -verfügbarkeit zu überwachen, erfasst Application Signals Standardmetriken (Störungen, Fehler und Latenz) und Laufzeitmetriken von erkannten Anwendungen, nachdem Sie es aktiviert haben.
Benutzerdefinierte Metriken ergänzen Ihre Anwendungsüberwachung um wertvollen Kontext und helfen dabei, die Fehlerbehebung zu beschleunigen. Dabei haben sie folgende Einsatzzwecke:
Die Analyse von Telemetriedaten individuell anpassen
Die Hauptursachen von Problemen ermitteln
Schnell präzise geschäftliche und betriebliche Entscheidungen treffen
Mit Application Signals zeigen Sie benutzerdefinierte Metriken an, die von einem Service generiert wurden und mit Standard- und Laufzeitmetriken korrelieren. Eine Anwendung könnte beispielsweise Metriken zur Anforderungsgröße und zur Cache-Fehleranzahl ausgeben. Diese benutzerdefinierten Metriken bieten detailliertere Einblicke in Leistungsprobleme und helfen Ihnen dabei, Verfügbarkeitseinbrüche und Latenzspitzen schneller zu diagnostizieren und zu beheben.
Themen
Konfiguration benutzerdefinierter Metriken für Application Signals
Sie können mithilfe von zwei Methoden benutzerdefinierte Metriken aus Ihrer Anwendung generieren: OpenTelemetry-Metriken und Span-Metriken.
OpenTelemetry-Metriken
Um benutzerdefinierte OpenTelemetry-Metriken mit Application Signals zu verwenden, müssen Sie entweder den CloudWatch-Agenten oder OpenTelemetry Collector verwenden. Mit benutzerdefinierten OpenTelemetry-Metriken können Sie mithilfe des OpenTelemetry Metrics SDK Metriken direkt aus Ihrem Anwendungscode erstellen und exportieren.
Integrierter Service für Application Signals.
Konfigurieren Sie den Agenten oder Kollektor.
Wenn Sie den CloudWatch-Agenten verwenden, müssen Sie
metrics_collectedmit einemotlpkonfigurieren. Beispiel:cloudwatch-config.json{ "traces": { "traces_collected": { "application_signals": {} } }, "logs": { "metrics_collected": { "application_signals": {}, "otlp": { "grpc_endpoint": "0.0.0.0:4317", "http_endpoint": "0.0.0.0:4318" } } } }Wenn Sie OpenTelemetry Collector nutzen, konfigurieren Sie eine Metrik-Pipeline. Sie müssen CloudWatch EMF Exporter for OpenTelemetry Collector
verwenden und Ressourcenattribute für die Bezeichnungen der Metriken aktivieren. Es wird empfohlen, dimension_rollup_option: NoDimensionRollupso zu konfigurieren, dass nicht viele Metrikaggregationen ausgegeben werden. Zum Beispielconfig.yaml:receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 exporters: awsemf: region: $REGION namespace: $NAMESPACE log_group_name:$LOG_GROUP_NAME resource_to_telemetry_conversion: enabled: true dimension_rollup_option: "NoDimensionRollup" otlphttp/traces: compression: gzip traces_endpoint: https://xray.$REGION.amazonaws.com/v1/traces auth: authenticator: sigv4auth/traces extensions: sigv4auth/logs: region: "$REGION" service: "logs" sigv4auth/traces: region: "$REGION" service: "xray" processors: batch: service: telemetry: extensions: [sigv4auth/logs, sigv4auth/traces] pipelines: metrics: receivers: [otlp] processors: [batch] exporters: [awsemf] traces: receivers: [otlp] processors: [batch] exporters: [otlphttp/traces]
Konfigurieren Sie die Umgebung. Wenn mehrere Services mit demselben Servicenamen vorhanden sind und Application-Signals-Metriken genau mit dem richtigen Servicenamen korreliert werden sollen, wird die Konfiguration des Ressourcenattributs
deployment.environment.nameempfohlen. Die Konfiguration dieses Ressourcenattributs erfolgt üblicherweise mithilfe von Umgebungsvariablen.OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME,deployment.environment.name=$YOUR_ENV_NAME"Konfigurieren Sie den Metrikexport im CloudWatch-Agenten oder OpenTelemetry Collector. Sie können eine der folgenden Ansätze verwenden:
(Empfohlen) Benutzerdefinierte Exportpipeline – Erstellen Sie im Anwendungscode einen dedizierten MeterProvider
, der zum konfigurierten Agenten- oder Collector-Endpunkt exportiert. Zum Beispiel: Resource resource = Resource.getDefault().toBuilder() .put(AttributeKey.stringKey("service.name"), serviceName) .put(AttributeKey.stringKey("deployment.environment.name"), environment) .build(); MetricExporter metricExporter = OtlpHttpMetricExporter.builder() .setEndpoint("http://localhost:4318/v1/metrics") .build(); MetricReader metricReader = PeriodicMetricReader.builder(metricExporter) .setInterval(Duration.ofSeconds(10)) .build() SdkMeterProvider meterProvider = SdkMeterProvider.builder() .setResource(resource) .registerMetricReader() .build(); Meter meter = meterProvider.get("myMeter");Agentenbasierter Export – Konfigurieren Sie die Agentenumgebungsvariablen OTEL_METRICS_EXPORTER
und OTEL_EXPORTER_OTLP_METRICS_ENDPOINT . Zum Beispiel: OTEL_METRICS_EXPORTER=otlp OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://localhost:4318/v1/metricsVerlassen Sie sich im Anwendungscode auf globalen MeterProvider, der vom Anwendungscode erstellt wurde. Zum Beispiel:
Meter meter = GlobalOpenTelemetry.getMeter("myMeter");
Fügen Sie mithilfe des OTEL Metrics SDK
im Anwendungscode OTEL Metrics hinzu. So ergänzen Sie beispielsweise die OTEL-Metriken in Python: counter = meter.counterBuilder("myCounter").build(); counter.add(value); counter.add(value, Attributes.of(AttributeKey.stringKey("Operation"), "myOperation"));Das Ergänzen des Operationsattributs ist nicht erforderlich, kann aber nützlich sein, um die Operationen des Application-Signals-Service mit benutzerdefinierten OpenTelemetry-Metriken zu korrelieren.
Span-Metriken
Benutzerdefinierte Span-Metriken funktionieren aktuell nur mit der Transaktionssuche. Benutzerdefinierte Span-Metriken ermöglichen Ihnen Folgendes:
Metriken mithilfe von Metrikfiltern zu erstellen
Span-Attribute zu verarbeiten, die im Anwendungscode eingefügt wurden
Das OpenTelemetry Traces SDK für die Implementierung zu verwenden
Aktivieren Sie die Überwachung von Application Signals mit der Transaktionssuche. Weitere Informationen finden Sie unter Transaktionssuche.
Um für eine 100-prozentige Metrik-Stichprobenziehung zu sorgen, wird empfohlen, 100 % der Spans an den Endpunkt zu senden.
Ergänzen Sie mithilfe des OTEL Traces SDK
Span-Attribute. Es gibt dafür zwei Möglichkeiten: [Empfohlen] Fügen Sie Attribute zu automatisch generierten Spans hinzu. Zum Beispiel:
Span.current().setAttribute("myattribute", value);Fügen Sie manuell generierten Spanns Attribute hinzu. Zum Beispiel:
Span span = tracer.spanBuilder("myspan").startSpan(); try (Scope scope = span.makeCurrent()) { span.setAttribute("myattribute", value); }
Erstellen Sie einen Metrikfilter mit folgenden Werten. Weitere Informationen zum Erstellen eines Metrikfilters finden Sie unter Erstellen eines Metrikfilters für eine Protokollgruppe.
Protokollgruppe – aws/spans
Filtermuster – { $.attributes.['myattribute'] = * }
Metrikname – myattribute (Die Werte müssen exakt übereinstimmen, sonst funktioniert die Span-Korrelation nicht
Metrikwert – $.attributes.['myattribute']
Dimensionen – Feldname: Service, Feldwert: $.attributes.['aws.local.service'], Feldname: Umgebung, Feldwert: $.attributes.['aws.local.environment'] und Feldname: Operation, Feldwert: $.attributes.['aws.local.operation']
Anmerkung
Wenn Sie manuell generierten Spans Attribute hinzufügen, können Sie
Operationnicht festlegen, daaws.local.operationin den Span-Daten nicht enthalten ist.
Anzeigen benutzerdefinierter Metriken in Application Signals
Sie können jetzt benutzerdefinierte Metriken für Services und Operationen in der Konsole von Application Signals anzeigen:
Wählen Sie einen Service aus der Liste der Services aus, um die neue Registerkarte „Zugehörige Metriken zu öffnen
Sehen Sie sich Standardmetriken, Laufzeitmetriken und verwandte Metriken für den ausgewählten Service an
Filtern Sie mehrere Metriken und wählen Sie diese aus der Liste aus
Ausgewählte Metriken grafisch darstellen, um Korrelationen und Ursachen von Problemen zu ermitteln
Weitere Informationen zu zugehörigen Metriken finden Sie unter Zugehörige Metriken anzeigen.
Häufig gestellte Fragen (FAQ)
Welche Auswirkungen hat es, wenn die Umgebungskonfiguration für benutzerdefinierte Metriken nicht hinzugefügt wird?
Application Signals konfiguriert das deployment.environment.name-Ressourcenattribut so, dass Anwendungen eindeutig identifiziert werden. Application Signals kann benutzerdefinierte Metriken, die von zwei verschiedenen Services mit demselben Namen generiert wurden, nicht eindeutig mit dem richtigen Service korrelieren.
Informationen zum Ergänzen einer Umgebungskonfiguration für Ihre Anwendung finden Sie unter OpenTelemetry-Metriken.
Gibt es Einschränkungen für Metrikfilter?
Sie können nur bis zu 100 Metrikfilter pro CloudWatch-Logs-Protokollgruppe erstellen. Jede definierte Metrik kann bis zu 3 Dimensionen haben. Sie können die Grenzwerte für Metrikfilter hier OpenTelemetry-Metriken ansehen.
Weshalb werden in der Metriktabelle keine Metrikdiagramme angezeigt?
Die Lösung hängt vom Metriktyp ab:
Benutzerdefinierte Metriken – siehe Konfiguration benutzerdefinierter Metriken für Application Signals zur Überprüfung der Metrikkonfiguration
Standard- oder Laufzeitmetriken – siehe Fehlerbehebung bei der Installation von Application Signals