

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
<a name="AppSignals-CustomMetrics"></a>

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.

**Topics**
+ [Konfiguration benutzerdefinierter Metriken für Application Signals](#AppSignals-CustomMetrics-Adding)
+ [Anzeigen benutzerdefinierter Metriken in Application Signals](#AppSignals-CustomMetrics-Viewing)
+ [Häufig gestellte Fragen (FAQ)](#AppSignals-CustomMetrics-FAQ)

## Konfiguration benutzerdefinierter Metriken für Application Signals
<a name="AppSignals-CustomMetrics-Adding"></a>

Sie können mithilfe von zwei Methoden benutzerdefinierte Metriken aus Ihrer Anwendung generieren: *OpenTelemetry-Metriken* und *Span-Metriken*.

**Topics**
+ [OpenTelemetry-Metriken](#AppSignals-CustomMetrics-OpenTelemetry)
+ [Span-Metriken](#AppSignals-CustomMetrics-SpanMetrics)

### OpenTelemetry-Metriken
<a name="AppSignals-CustomMetrics-OpenTelemetry"></a>

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.

1. Integrierter Service für Application Signals.

1. Konfigurieren Sie den Agenten oder Kollektor.
   + Wenn Sie den CloudWatch-Agenten verwenden, müssen Sie `metrics_collected` mit einem `otlp` [konfigurieren](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-OpenTelemetry-metrics.html). 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](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/awsemfexporter) verwenden und [Ressourcenattribute für die Bezeichnungen der Metriken aktivieren.](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/awsemfexporter#resource-attributes-to-metric-labels) 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]
     ```

1. 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"
   ```

1. 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](https://opentelemetry.io/docs/specs/otel/metrics/sdk/#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](https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/#exporter-selection) und [OTEL\_EXPORTER\_OTLP\_METRICS\_ENDPOINT](https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/#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 Anwendungscode auf globalen MeterProvider, der vom Anwendungscode erstellt wurde. Zum Beispiel:

     ```
     Meter meter = GlobalOpenTelemetry.getMeter("myMeter");
     ```

1. Fügen Sie mithilfe des [OTEL Metrics SDK](https://opentelemetry.io/docs/specs/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
<a name="AppSignals-CustomMetrics-SpanMetrics"></a>

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

1. Aktivieren Sie die Überwachung von Application Signals mit der Transaktionssuche. Weitere Informationen finden Sie unter [Transaktionssuche](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Transaction-Search-getting-started.html).

   Um für eine 100-prozentige Metrik-Stichprobenziehung zu sorgen, wird empfohlen, 100 % der Spans an den Endpunkt zu senden.

1. Ergänzen Sie mithilfe des [OTEL Traces SDK](https://opentelemetry.io/docs/specs/otel/trace/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);
     }
     ```

1. Erstellen Sie einen Metrikfilter mit folgenden Werten. Weitere Informationen zum Erstellen eines Metrikfilters finden Sie unter [Erstellen eines Metrikfilters für eine Protokollgruppe](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CreateMetricFilterProcedure.html).
   + 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 `Operation` nicht festlegen, da `aws.local.operation` in den Span-Daten nicht enthalten ist.

## Anzeigen benutzerdefinierter Metriken in Application Signals
<a name="AppSignals-CustomMetrics-Viewing"></a>

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](ServiceDetail.md#ServiceDetail-relatedmetrics).

## Häufig gestellte Fragen (FAQ)
<a name="AppSignals-CustomMetrics-FAQ"></a>

### Welche Auswirkungen hat es, wenn die Umgebungskonfiguration für benutzerdefinierte Metriken nicht hinzugefügt wird?
<a name="AppSignals-CustomMetrics-FAQ-Environment"></a>

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](#AppSignals-CustomMetrics-OpenTelemetry).

### Gibt es Einschränkungen für Metrikfilter?
<a name="AppSignals-CustomMetrics-FAQ-Limits"></a>

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](#AppSignals-CustomMetrics-OpenTelemetry) ansehen.

### Weshalb werden in der Metriktabelle keine Metrikdiagramme angezeigt?
<a name="AppSignals-CustomMetrics-FAQ-Graph"></a>

Die Lösung hängt vom Metriktyp ab:
+ Benutzerdefinierte Metriken – siehe [Konfiguration benutzerdefinierter Metriken für Application Signals](#AppSignals-CustomMetrics-Adding) zur Überprüfung der Metrikkonfiguration
+ Standard- oder Laufzeitmetriken – siehe [Fehlerbehebung bei der Installation von Application Signals ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-Enable-Troubleshoot.html)