Metriche personalizzate con Application Signals - Amazon CloudWatch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Metriche personalizzate con Application Signals

Per monitorare le prestazioni e la disponibilità delle applicazioni, Application Signals raccoglie metriche standard (guasti, errori e latenza) e metriche di runtime dalle applicazioni scoperte dopo averle abilitate.

Le metriche personalizzate aggiungono un contesto prezioso al monitoraggio delle applicazioni e aiutano a velocizzare la risoluzione dei problemi. Puoi usarle per:

  • Personalizzare l'analisi dei dati di telemetria

  • Identifica le cause principali dei problemi

  • Prendi rapidamente decisioni aziendali e operative precise

Application Signals consente di visualizzare e correlare le metriche personalizzate generate da un servizio con metriche standard e di runtime. Ad esempio, un'applicazione potrebbe emettere metriche relative alla dimensione delle richieste e al numero di errori nella cache. Queste metriche personalizzate forniscono informazioni più dettagliate sui problemi di prestazioni, aiutandoti a diagnosticare e risolvere più rapidamente i cali di disponibilità e i picchi di latenza.

Configurazione di metriche personalizzate per Application Signals

Puoi generare metriche personalizzate dalla tua applicazione utilizzando due metodi: OpenTelemetry metriche e metriche Span.

OpenTelemetry metriche

Per utilizzare OpenTelemetry metriche personalizzate con Application Signals, è necessario utilizzare l' CloudWatch Agent o OpenTelemetry il Collector. OpenTelemetry Le metriche personalizzate consentono di creare ed esportare metriche direttamente dal codice dell'applicazione utilizzando Metrics SDK. OpenTelemetry

  1. Servizio integrato per Application Signals.

  2. Configura l'agente o il raccoglitore.

    • Quando si utilizza l' CloudWatch agente, è necessario configurarlo metrics_collected con unotlp. Ad esempio, 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" } } } }
    • Quando usi OpenTelemetry Collector, configura una pipeline di metriche. È necessario utilizzare CloudWatch EMF Exporter for OpenTelemetry Collector e abilitare gli attributi delle risorse nelle etichette delle metriche. Si consiglia di eseguire la configurazione per evitare l'emissione dimension_rollup_option: NoDimensionRollup di molte aggregazioni metriche. Ad esempio,: 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. Configura l'ambiente. Quando sono presenti più servizi con lo stesso nome di servizio e per correlare accuratamente le metriche di Application Signals al nome di servizio corretto, si consiglia di configurare l'attributo deployment.environment.name resource. La configurazione di questo attributo di risorsa viene generalmente eseguita tramite le variabili di ambiente.

    OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME,deployment.environment.name=$YOUR_ENV_NAME"
  4. Configura l'esportazione delle metriche verso l' CloudWatch agente o il raccoglitore OpenTelemetry . È possibile utilizzare uno dei seguenti approcci:

    • (Consigliato) Pipeline di esportazione personalizzata: nel codice dell'applicazione, create un'MeterProvideresportazione dedicata all'agente o all'endpoint di raccolta configurato. Per esempio:

      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");
    • Esportazione basata su agenti: configura le variabili di ambiente dell'agente OTEL_METRICS_EXPORTER e OTEL_EXPORTER_OTLP_METRICS_ENDPOINT. Per esempio:

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

      Nel codice dell'applicazione MeterProvider , fate affidamento su global creato dall'agente. Per esempio:

      Meter meter = GlobalOpenTelemetry.getMeter("myMeter");
  5. Utilizzando OTEL Metrics SDK nel codice dell'applicazione, aggiungete le metriche OTEL. Ad esempio, per aggiungere le metriche OTEL in Python:

    counter = meter.counterBuilder("myCounter").build(); counter.add(value); counter.add(value, Attributes.of(AttributeKey.stringKey("Operation"), "myOperation"));

    L'aggiunta dell'attributo Operation non è obbligatoria, ma può essere utile per correlare le operazioni del servizio Application Signals alle metriche personalizzate. OpenTelemetry

Metriche Span

Le metriche Custom Span attualmente funzionano solo con Transaction Search. Con le metriche Span personalizzate, puoi:

  • Creare metriche utilizzando Metrics Filters

  • Attributi Process Span aggiunti nel codice dell'applicazione

  • Utilizza l'SDK OpenTelemetry Traces per l'implementazione

  1. Abilita il monitoraggio dei segnali applicativi con Transaction Search. Per ulteriori informazioni, consulta Transaction Search.

    Per garantire un campionamento metrico al 100%, si consiglia di inviare il 100% degli intervalli all'endpoint.

  2. Aggiungi gli attributi span utilizzando l'SDK OTEL Traces. Esistono due modi:

    • [Consigliato] Aggiungi attributi agli intervalli generati automaticamente. Per esempio:

      Span.current().setAttribute("myattribute", value);
    • Aggiungi attributi agli intervalli generati manualmente. Per esempio:

      Span span = tracer.spanBuilder("myspan").startSpan(); try (Scope scope = span.makeCurrent()) { span.setAttribute("myattribute", value); }
  3. Crea un filtro metrico con i seguenti valori. Per informazioni su come creare un filtro metrico, consulta Creare un filtro metrico per un gruppo di log.

    • Gruppo di log: aws/spans

    • Schema di filtro: {$.attributes. ['mioattributo'] = *}

    • Nome della metrica: myattribute (I valori devono corrispondere esattamente, altrimenti la correlazione tra gli intervalli non funzionerà)

    • Valore della metrica: $.attributes. ['mio attributo']

    • Dimensioni: nome del campo: servizio, valore del campo: $.attributes. ['aws.local.service'], Nome campo: Ambiente, Valore del campo: $.attributes. ['aws.local.environment'] e nome campo: operazione, valore del campo: $.attributes. ['aws.local.operation']

      Nota

      Quando aggiungi attributi agli span generati manualmente, non puoi impostarli Operation perché non aws.local.operation saranno presenti nei dati span.

Visualizzazione di metriche personalizzate in Application Signals

Ora puoi visualizzare metriche personalizzate per servizi e operazioni nella console Application Signals:

  • Seleziona un servizio dall'elenco Servizi per visualizzare la nuova scheda Metriche correlate

  • Visualizza le metriche standard, le metriche di runtime e le metriche correlate per il servizio selezionato

  • Filtra e seleziona più metriche dall'elenco

  • Rappresenta graficamente le metriche selezionate per identificare le correlazioni e le cause principali dei problemi

Per ulteriori informazioni sulle metriche correlate, consulta. Visualizza le metriche correlate

Domande frequenti () FAQs

Qual è l'impatto della mancata aggiunta della configurazione per l'ambiente per le metriche personalizzate?

Application Signals configura l'attributo deployment.environment.name resource per disambiguare le applicazioni. Application Signals non può correlare le metriche personalizzate generate da due servizi diversi con lo stesso nome al servizio corretto senza disambiguazione.

Per aggiungere la configurazione dell'ambiente all'applicazione, consulta. OpenTelemetry metriche

Esistono limiti per i filtri delle metriche?

Puoi creare solo fino a 100 filtri metrici per gruppo di CloudWatch log Logs. Ogni metrica definita può avere fino a 3 dimensioni. Puoi visualizzare i limiti per i filtri delle metriche qui. OpenTelemetry metriche

Perché i grafici metrici non vengono visualizzati nella tabella delle metriche?

La soluzione dipende dal tipo di metrica: