Métriques personnalisées avec signaux d'application - Amazon CloudWatch

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Métriques personnalisées avec signaux d'application

Pour surveiller les performances et la disponibilité des applications, Application Signals collecte des métriques standard (pannes, erreurs et latence) et des métriques d'exécution à partir des applications découvertes une fois que vous les avez activées.

Les métriques personnalisées ajoutent un contexte précieux à la surveillance de vos applications et contribuent à accélérer le dépannage. Vous pouvez les utiliser pour :

  • Personnaliser l'analyse des données de télémétrie

  • Identifier les causes profondes des problèmes

  • Prenez rapidement des décisions commerciales et opérationnelles précises

Application Signals vous permet de visualiser et de corréler les métriques personnalisées générées par un service avec les métriques standard et d'exécution. Par exemple, une application peut émettre des métriques relatives à la taille des demandes et au nombre d'erreurs de cache. Ces indicateurs personnalisés fournissent des informations plus détaillées sur les problèmes de performances, vous aidant à diagnostiquer et à résoudre les baisses de disponibilité et les pics de latence plus rapidement.

Configuration de métriques personnalisées pour les signaux d'application

Vous pouvez générer des métriques personnalisées à partir de votre application à l'aide de deux méthodes : OpenTelemetry les métriques et les métriques Span.

OpenTelemetry métriques

Pour utiliser OpenTelemetry des métriques personnalisées avec les signaux d'application, vous devez utiliser l' CloudWatch agent ou le OpenTelemetry collecteur. OpenTelemetry Les métriques personnalisées vous permettent de créer et d'exporter des métriques directement à partir du code de votre application à l'aide du SDK OpenTelemetry Metrics.

  1. Service intégré aux signaux d'application.

  2. Configurez l'agent ou le collecteur.

    • Lorsque vous utilisez l' CloudWatch agent, vous devez le configurer metrics_collected avec unotlp. Par exemple, 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" } } } }
    • Lorsque vous utilisez OpenTelemetry Collector, configurez un pipeline de métriques. Vous devez utiliser CloudWatch EMF Exporter for OpenTelemetry Collector et activer les attributs de ressources pour les étiquettes métriques. Il est recommandé de configurer pour dimension_rollup_option: NoDimensionRollup éviter d'émettre de nombreuses agrégations métriques. Par exemple 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. Configurez l'environnement. Lorsque plusieurs services portent le même nom de service et pour corréler avec précision les métriques des signaux d'application au nom de service correct, il est recommandé de configurer l'attribut deployment.environment.name de ressource. La configuration de cet attribut de ressource s'effectue généralement par le biais des variables d'environnement.

    OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME,deployment.environment.name=$YOUR_ENV_NAME"
  4. Configurez l'exportation des métriques vers l' CloudWatch agent ou le OpenTelemetry collecteur. Vous pouvez utiliser l'une des approches suivantes :

    • (Recommandé) Pipeline d'exportation personnalisé : dans le code de l'application, créez une MeterProviderexportation dédiée vers le point de terminaison de l'agent ou du collecteur configuré. Par exemple :

      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");
    • Exportation basée sur un agent : configurez les variables d'environnement de l'agent OTEL_METRICS_EXPORTER et OTEL_EXPORTER_OTLP_METRICS_ENDPOINT. Par exemple :

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

      Dans le code de l'application, utilisez le global MeterProvider créé par l'agent. Par exemple :

      Meter meter = GlobalOpenTelemetry.getMeter("myMeter");
  5. À l'aide du SDK OTEL Metrics dans le code de l'application, ajoutez les OTEL Metrics. Par exemple, pour ajouter les métriques OTEL en Python :

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

    L'ajout de l'attribut Operation n'est pas obligatoire, mais peut être utile pour corréler les opérations de service des signaux d'application aux OpenTelemetry métriques personnalisées.

Métriques de la durée

Les métriques Span personnalisées ne fonctionnent actuellement qu'avec Transaction Search. Grâce aux métriques Span personnalisées, vous pouvez :

  • Création de métriques à l'aide de filtres de métriques

  • Attributs de durée du processus ajoutés dans le code de l'application

  • Utiliser le SDK OpenTelemetry Traces pour la mise en œuvre

  1. Activez la surveillance des signaux d'application avec Transaction Search. Pour plus d'informations, consultez la section Recherche de transactions.

    Pour garantir un échantillonnage métrique à 100 %, il est recommandé d'envoyer 100 % des intervalles au point final.

  2. Ajoutez des attributs span à l'aide du SDK OTEL Traces. Il existe deux moyens :

    • [Recommandé] Ajoutez des attributs aux intervalles générés automatiquement. Par exemple :

      Span.current().setAttribute("myattribute", value);
    • Ajoutez des attributs aux intervalles générés manuellement. Par exemple :

      Span span = tracer.spanBuilder("myspan").startSpan(); try (Scope scope = span.makeCurrent()) { span.setAttribute("myattribute", value); }
  3. Créez un filtre métrique avec les valeurs suivantes. Pour plus d'informations sur la création d'un filtre métrique, voir Création d'un filtre métrique pour un groupe de logs.

    • Log Group — aws/spans

    • Modèle de filtre — {$.attributes. ['myattribute'] = *}

    • Nom de la métrique — myattribute (Les valeurs doivent correspondre exactement, sinon la corrélation entre les intervalles ne fonctionnera pas)

    • Valeur métrique — $.attributes. ['mon attribut']

    • Dimensions — Nom du champ : Service, valeur du champ : $.attributes. ['aws.local.service'], nom du champ : environnement, valeur du champ : $.attributes. ['aws.local.environment'], et nom du champ : Operation, valeur du champ : $.attributes. ['aws.local.operation']

      Note

      Lorsque vous ajoutez des attributs à des intervalles générés manuellement, vous ne pouvez pas les définir Operation car ils ne aws.local.operation figureront pas dans les données des intervalles.

Afficher des métriques personnalisées dans Application Signals

Vous pouvez désormais consulter les métriques personnalisées pour les services et les opérations dans la console Application Signals :

  • Sélectionnez un service dans la liste des services pour voir le nouvel onglet Indicateurs associés

  • Afficher les métriques standard, les métriques d'exécution et les métriques associées pour le service que vous avez sélectionné

  • Filtrez et sélectionnez plusieurs métriques dans la liste

  • Reproduisez graphiquement les métriques sélectionnées pour identifier les corrélations et les causes profondes des problèmes

Pour plus d'informations sur les métriques associées, consultezAfficher les métriques associées.

Questions fréquemment posées (FAQs)

Quel est l'impact de ne pas ajouter la configuration de l'environnement pour les métriques personnalisées ?

Application Signals configure l'attribut de deployment.environment.name ressource pour désambiguïser les applications. Application Signals ne peut pas corréler les métriques personnalisées générées par deux services différents portant le même nom avec le service approprié sans aucune ambiguïté.

Pour ajouter une configuration d'environnement à votre application, consultezOpenTelemetry métriques.

Existe-t-il des limites pour les filtres de mesures ?

Vous ne pouvez créer que 100 filtres de mesures par groupe de CloudWatch journaux Logs. Chaque métrique définie peut avoir jusqu'à 3 dimensions. Vous pouvez consulter les limites des filtres de mesures iciOpenTelemetry métriques.

Pourquoi les graphiques métriques n'apparaissent-ils pas dans le tableau des métriques ?

La solution dépend de votre type de métrique :