Benutzerdefinierte Metriken mit Anwendungssignalen - 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 Anwendungssignalen

Um die Leistung und Verfügbarkeit von Anwendungen zu überwachen, erfasst Application Signals Standardmetriken (Fehler, Fehler und Latenz) und Laufzeitmetriken von erkannten Anwendungen, nachdem Sie es aktiviert haben.

Benutzerdefinierte Metriken fügen Ihrer Anwendungsüberwachung wertvollen Kontext hinzu und helfen, die Fehlerbehebung zu beschleunigen. Sie können sie verwenden, um:

  • Passen Sie die Analyse von Telemetriedaten an

  • Identifizieren Sie die Hauptursachen von Problemen

  • Treffen Sie schnell präzise geschäftliche und betriebliche Entscheidungen

Mit Application Signals können Sie benutzerdefinierte Metriken, die von einem Service generiert wurden, anzeigen und mit Standard- und Laufzeitmetriken korrelieren. Eine Anwendung könnte beispielsweise Metriken für die Anforderungsgröße und die Anzahl fehlender Cache-Fehler ausgeben. Diese benutzerdefinierten Metriken bieten detailliertere Einblicke in Leistungsprobleme und helfen Ihnen, Verfügbarkeitseinbrüche und Latenzspitzen schneller zu diagnostizieren und zu beheben.

Konfiguration benutzerdefinierter Metriken für Anwendungssignale

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 den OpenTelemetry Collector verwenden. Mit benutzerdefinierten OpenTelemetry Metriken können Sie mithilfe des Metrics SDK Metriken direkt aus Ihrem Anwendungscode erstellen und exportieren. OpenTelemetry

  1. Integrierter Service für Anwendungssignale.

  2. Konfigurieren Sie den Agenten oder Collector.

    • 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 für OpenTelemetry Collector verwenden und Resource Attributes to Metric Labels aktivieren. Es wird empfohlen, die Konfiguration so dimension_rollup_option: NoDimensionRollup zu konfigurieren, dass nicht viele metrische Aggregationen 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 es mehrere Dienste mit demselben Dienstnamen gibt und um Application Signals-Metriken genau mit dem richtigen Dienstnamen zu korrelieren, wird empfohlen, das Ressourcenattribut deployment.environment.name zu konfigurieren. Die Konfiguration dieses Ressourcenattributs erfolgt üblicherweise über die Umgebungsvariablen.

    OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME,deployment.environment.name=$YOUR_ENV_NAME"
  4. Konfigurieren Sie den Metrikexport an den CloudWatch Agenten oder OpenTelemetry Collector. Sie können einen der folgenden Ansätze verwenden:

    • (Empfohlen) Benutzerdefinierte Exportpipeline — Erstellen Sie im Anwendungscode einen speziellen MeterProviderExport zum konfigurierten Agenten- oder Collector-Endpunkt. 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/metrics

      Verlassen Sie sich im MeterProvider Anwendungscode auf die vom Agenten erstellten globalen Werte. Zum Beispiel:

      Meter meter = GlobalOpenTelemetry.getMeter("myMeter");
  5. Fügen Sie mithilfe des OTEL Metrics SDK im Anwendungscode die OTEL Metrics hinzu. Um beispielsweise die OTEL-Metriken in Python hinzuzufügen:

    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 den Betrieb des Application Signals Service mit benutzerdefinierten OpenTelemetry Metriken zu korrelieren.

Metriken umfassen

Benutzerdefinierte Span-Metriken funktionieren derzeit nur mit Transaction Search. Mit benutzerdefinierten Span-Metriken können Sie:

  • Metriken mithilfe von Metrikfiltern erstellen

  • Dem Anwendungscode wurden Attribute für die Prozessspanne hinzugefügt

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

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

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

  2. Fügen Sie mithilfe des OTEL Traces SDK Span-Attribute hinzu. Es gibt zwei Möglichkeiten:

    • [Empfohlen] Fügen Sie Attribute zu automatisch generierten Spannen hinzu. Zum Beispiel:

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

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

    • Protokollgruppe — aws/spans

    • Filtermuster — {$.attributes. ['mein Attribut'] = *}

    • Metrikname — myattribute (Die Werte müssen exakt übereinstimmen, sonst funktioniert die Spannenkorrelation nicht

    • Metrischer Wert — $.attributes. ['mein Attribut']

    • 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 Spannen Attribute hinzufügen, können Sie diese nicht festlegen, Operation da sie in den aws.local.operation Span-Daten nicht enthalten sind.

Benutzerdefinierte Metriken in Application Signals anzeigen

Sie können jetzt benutzerdefinierte Metriken für Dienste und Operationen in der Application Signals-Konsole anzeigen:

  • Wählen Sie einen Service aus der Liste der Dienste aus, um die neue Registerkarte „Verwandte Metriken“ zu öffnen

  • Zeigen Sie Standardmetriken, Laufzeitmetriken und verwandte Metriken für den ausgewählten Service an

  • Filtern Sie mehrere Metriken und wählen Sie sie aus der Liste aus

  • Ausgewählte Metriken grafisch darstellen, um Korrelationen und Hauptursachen von Problemen zu identifizieren

Weitere Informationen zu verwandten Kennzahlen finden Sie unterVerwandte Metriken anzeigen.

Häufig gestellte Fragen (FAQs)

Welche Auswirkungen hat es, wenn die Konfiguration für die Umgebung 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 Diensten mit demselben Namen generiert wurden, nicht eindeutig mit dem richtigen Dienst korrelieren.

Informationen zum Hinzufügen einer Umgebungskonfiguration zu Ihrer Anwendung finden Sie unter. OpenTelemetry Metriken

Gibt es Beschränkungen für Metrikfilter?

Sie können nur bis zu 100 Metrikfilter pro CloudWatch Log-Protokollgruppe erstellen. Jede definierte Metrik kann bis zu 3 Dimensionen haben. Sie können die Grenzwerte für Metrikfilter hier einsehenOpenTelemetry Metriken.

Warum werden in der Metriktabelle keine Metrikdiagramme angezeigt?

Die Lösung hängt von Ihrem Metriktyp ab: