View a markdown version of this page

Metrik kustom dengan Sinyal Aplikasi - Amazon CloudWatch

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Metrik kustom dengan Sinyal Aplikasi

Untuk memantau kinerja dan ketersediaan aplikasi, Sinyal Aplikasi mengumpulkan metrik standar (kesalahan, kesalahan, dan latensi) dan metrik runtime dari aplikasi yang ditemukan setelah Anda mengaktifkannya.

Metrik Kustom menambahkan konteks berharga ke pemantauan aplikasi Anda dan membantu mempercepat pemecahan masalah. Anda dapat menggunakannya untuk:

  • Menyesuaikan analisis data telemetri

  • Mengidentifikasi akar penyebab masalah

  • Membuat keputusan bisnis dan operasional yang tepat dengan cepat

Sinyal Aplikasi memungkinkan Anda melihat dan menghubungkan metrik kustom yang dihasilkan dari layanan dengan metrik standar dan runtime. Misalnya, aplikasi dapat memancarkan metrik untuk ukuran permintaan dan jumlah kehilangan cache. Metrik khusus ini memberikan wawasan yang lebih terperinci tentang masalah kinerja, membantu Anda mendiagnosis dan menyelesaikan penurunan ketersediaan dan lonjakan latensi lebih cepat.

Mengkonfigurasi metrik khusus ke Sinyal Aplikasi

Anda dapat membuat metrik khusus dari aplikasi menggunakan dua metode: OpenTelemetry metrik dan metrik Span.

OpenTelemetry metrik

Untuk menggunakan OpenTelemetry metrik khusus dengan Sinyal Aplikasi, Anda harus menggunakan CloudWatch Agen atau OpenTelemetry Kolektor. OpenTelemetry Metrik khusus memungkinkan Anda membuat dan mengekspor metrik langsung dari kode aplikasi menggunakan OpenTelemetry Metrics SDK.

  1. Layanan onboard ke Sinyal Aplikasi.

  2. Konfigurasikan agen atau kolektor.

    • Saat menggunakan CloudWatch agen, Anda harus mengkonfigurasi metrics_collected denganotlp. Sebagai contoh, 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" } } } }
    • Saat menggunakan OpenTelemetry Collector, konfigurasikan pipeline metrik. Anda harus menggunakan Eksportir CloudWatch EMF untuk OpenTelemetry Kolektor dan mengaktifkan Atribut Sumber Daya ke Label Metrik. Disarankan untuk mengkonfigurasi dimension_rollup_option: NoDimensionRollup agar tidak memancarkan banyak agregasi metrik. Sebagai contoh,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. Konfigurasikan lingkungan. Jika ada beberapa layanan dengan nama layanan yang sama dan untuk menghubungkan metrik Sinyal Aplikasi secara akurat dengan nama layanan yang benar, disarankan untuk mengonfigurasi atribut deployment.environment.name resource. Mengkonfigurasi atribut resource ini biasanya dilakukan melalui variabel lingkungan.

    OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME,deployment.environment.name=$YOUR_ENV_NAME"
  4. Konfigurasikan ekspor metrik ke CloudWatch agen atau OpenTelemetry Kolektor. Anda dapat menggunakan salah satu pendekatan berikut:

    • (Direkomendasikan) Jalur ekspor kustom - Dalam kode aplikasi, buat MeterProvider ekspor khusus ke agen atau titik akhir kolektor yang dikonfigurasi. Contoh:

      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 ekspor — Konfigurasikan variabel lingkungan agen OTEL_METRICS_EXPORTER dan OTEL_EXPOR TER_OTLP_METRICS_ENDPOINT. https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/#otel_exporter_otlp_metrics_endpoint Contoh:

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

      Dalam kode aplikasi, bergantung pada global MeterProvider yang dibuat oleh agen. Contoh:

      Meter meter = GlobalOpenTelemetry.getMeter("myMeter");
  5. Menggunakan OTEL Metrics SDK dalam kode aplikasi, tambahkan Metrik OTEL. Misalnya, untuk menambahkan metrik OTEL di Python:

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

    Menambahkan atribut Operasi tidak diperlukan, tetapi dapat berguna untuk menghubungkan Operasi Layanan Sinyal Aplikasi ke OpenTelemetry Metrik Kustom.

Metrik rentang

Metrik Custom Span saat ini hanya berfungsi dengan Pencarian Transaksi. Dengan metrik Span kustom, Anda dapat:

  • Buat metrik menggunakan Filter Metrik

  • Atribut rentang proses ditambahkan dalam kode aplikasi

  • Gunakan Tr OpenTelemetry aces SDK untuk implementasi

  1. Aktifkan pemantauan Sinyal Aplikasi dengan Pencarian Transaksi. Untuk informasi selengkapnya, lihat Pencarian Transaksi.

    Untuk memastikan pengambilan sampel metrik 100%, disarankan untuk mengirim 100% rentang ke titik akhir.

  2. Tambahkan atribut rentang menggunakan OTEL Traces SDK. Ada dua cara:

    • [Disarankan] Tambahkan atribut ke rentang yang dihasilkan secara otomatis. Contoh:

      Span.current().setAttribute("myattribute", value);
    • Tambahkan atribut ke rentang yang dibuat secara manual. Contoh:

      Span span = tracer.spanBuilder("myspan").startSpan(); try (Scope scope = span.makeCurrent()) { span.setAttribute("myattribute", value); }
  3. Buat filter metrik dengan nilai-nilai berikut. Untuk informasi tentang cara membuat filter metrik, lihat Membuat filter metrik untuk grup log.

    • Grup Log - aws/spans

    • Pola filter — {$.properties. ['atribut saya'] = *}

    • Nama metrik — myatribut (Nilai harus sama persis atau korelasi rentang tidak akan berfungsi

    • Nilai metrik — $.properties. ['atribut saya']

    • Dimensi — Nama Bidang: Layanan, Nilai Bidang: $.properties. ['aws.local.service'], Nama Bidang: Lingkungan, Nilai Bidang: $.properties. ['aws.local.environment'], dan Nama Bidang: Operasi, Nilai Bidang: $.properties. ['aws.local.operasi']

      catatan

      Saat Anda menambahkan atribut ke rentang yang dibuat secara manual, Anda tidak dapat mengatur Operation karena tidak aws.local.operation akan hadir dalam data rentang.

Melihat metrik khusus di Sinyal Aplikasi

Anda sekarang dapat melihat metrik khusus untuk layanan dan operasi di konsol Sinyal Aplikasi:

  • Pilih layanan dari daftar Layanan untuk melihat tab Metrik Ter kait yang baru

  • Melihat metrik standar, metrik runtime, dan metrik terkait untuk layanan yang Anda pilih

  • Filter dan pilih beberapa metrik dari daftar

  • Grafik metrik yang dipilih untuk mengidentifikasi korelasi dan akar penyebab masalah

Untuk informasi selengkapnya tentang Metrik Terkait, lihatLihat metrik terkait.

Pertanyaan yang sering diajukan (FAQ)

Apa dampak dari tidak menambahkan konfigurasi untuk lingkungan untuk metrik khusus?

Sinyal Aplikasi mengonfigurasi atribut deployment.environment.name resource untuk mendisambiguasi aplikasi. Sinyal Aplikasi tidak dapat menghubungkan metrik khusus yang dihasilkan dari dua layanan berbeda dengan nama yang sama ke layanan yang benar tanpa disambiguasi.

Untuk menambahkan konfigurasi lingkungan ke aplikasi Anda, lihatOpenTelemetry metrik.

Apakah ada batasan untuk filter metrik?

Anda hanya dapat membuat hingga 100 filter metrik per grup CloudWatch log log. Setiap metrik yang ditentukan dapat memiliki hingga 3 dimensi. Anda dapat melihat batas untuk filter metrik di siniOpenTelemetry metrik.

Mengapa grafik metrik tidak muncul di tabel metrik?

Solusinya tergantung pada jenis metrik Anda: