View a markdown version of this page

Benutzerdefinierte Metriken mit Application Signals - Amazon CloudWatch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

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.

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 Agent oder den OpenTelemetry Collector verwenden. Benutzerdefinierte OpenTelemetry Metriken ermöglichen es Ihnen, mithilfe des Metrics SDK Metriken direkt aus Ihrem Anwendungscode zu erstellen und zu exportieren. OpenTelemetry

  1. Integrierter Service für Application Signals.

  2. Konfigurieren Sie den Agenten oder Kollektor.

    • Wenn Sie den CloudWatch Agenten verwenden, müssen Sie ihn metrics_collected mit einem konfigurierenotlp. 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 verwenden, konfigurieren Sie eine Metrik-Pipeline. Sie müssen CloudWatch EMF Exporter for OpenTelemetry Collector verwenden und die Option Ressourcenattribute für metrische Labels aktivieren. Es wird empfohlen, dimension_rollup_option: NoDimensionRollup so zu konfigurieren, dass nicht viele Metrikaggregationen ausgegeben werden. Zum Beispiel: config.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]
  3. 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.name empfohlen. Die Konfiguration dieses Ressourcenattributs erfolgt üblicherweise mithilfe von Umgebungsvariablen.

    OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME,deployment.environment.name=$YOUR_ENV_NAME"
  4. Konfigurieren Sie den Metrik-Export zum CloudWatch Agenten oder OpenTelemetry Collector. Sie können eine der folgenden Ansätze verwenden:

    • (Empfohlen) Benutzerdefinierte Exportpipeline — Erstellen Sie im Anwendungscode eine dedizierte MeterProvider Exportpipeline zum konfigurierten Agenten- oder Collector-Endpunkt. 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");
    • Agent-based Export — Konfigurieren Sie die Agenten-Umgebungsvariablen OTEL_METRICS_EXPORTER und OTEL_EXPORTER_OTLP_METRICS_ENDPOINT. https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/#otel_exporter_otlp_metrics_endpoint Beispiel:

      OTEL_METRICS_EXPORTER=otlp OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=http://localhost:4318/v1/metrics

      Verlassen Sie sich im MeterProvider Anwendungscode auf die vom Agenten erstellte globale Version. Beispiel:

      Meter meter = GlobalOpenTelemetry.getMeter("myMeter");
  5. 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 Hinzufügen des Operation-Attributs 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

  • Verwenden Sie das OpenTelemetry Traces SDK für die Implementierung

  1. Aktivieren Sie die Überwachung von Application Signals mit der Transaktionssuche. Weitere Informationen finden Sie unter Transaktionssuche.

    Um eine 100% ige metrische Stichprobenentnahme zu gewährleisten, wird empfohlen, 100% der Spannweiten an den Endpunkt zu senden.

  2. 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. Beispiel:

      Span.current().setAttribute("myattribute", value);
    • Fügen Sie manuell generierten Spanns Attribute hinzu. Beispiel:

      Span span = tracer.spanBuilder("myspan").startSpan(); try (Scope scope = span.makeCurrent()) { span.setAttribute("myattribute", value); }
  3. Erstellen Sie einen Metrikfilter mit folgenden Werten. Weitere Informationen zum Erstellen eines Metrikfilters finden Sie unter Erstellen eines Metrikfilters für eine Protokollgruppe.

    • Gruppe protokollieren — 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 Operation nicht festlegen, da aws.local.operation in 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-Loggruppe 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: