← Semua pembelajaran / AWS untuk AI Engineer
Fase 7 · Observability, Biaya & Evaluasi

Metrik CloudWatch untuk Bedrock

Bedrock menerbitkan metrik ke CloudWatch tanpa kamu menulis kode apa pun. Beberapa di antaranya adalah sinyal biaya paling cepat yang kamu punya.

Intisari

  • Namespace AWS/Bedrock, diterbitkan oleh endpoint bedrock-runtime.
  • InputTokenCount dan OutputTokenCount — sinyal biaya yang muncul dalam hitungan menit.
  • InvocationLatency mengukur sampai token terakhir; TimeToFirstToken khusus untuk streaming.
  • InvocationThrottles tidak dihitung sebagai Invocations maupun error — ia metrik tersendiri.
  • Banyaknya throttle yang terlihat bergantung pada setelan retry SDK-mu.

Metrik yang tersedia

MetrikSatuanMenjawab
InvocationsSampleCountBerapa permintaan berhasil
InvocationLatencyMilidetikWaktu sampai token terakhir diterima
TimeToFirstTokenMilidetikWaktu sampai token pertama (streaming)
InputTokenCountSampleCountToken masukan
OutputTokenCountSampleCountToken keluaran
InvocationThrottlesSampleCountPermintaan yang di-throttle
InvocationClientErrorsSampleCountError di sisi klien (4xx)
InvocationServerErrorsSampleCountError di sisi AWS (5xx)

Dua kehalusan yang penting saat membuat alarm. Pertama, permintaan yang di-throttle tidak dihitung sebagai Invocations maupun sebagai error — jadi rasio error/invocation tidak akan menunjukkan masalah throttling sama sekali. Kedua, jumlah throttle yang kamu lihat bergantung pada setelan retry SDK: retry yang agresif menyembunyikan throttle dari metrik sambil menambah latensi.

Alarm token — pendeteksi biaya tercepat

from aws_cdk import aws_cloudwatch as cw

metrik_token = cw.Metric(
    namespace="AWS/Bedrock",
    metric_name="OutputTokenCount",
    statistic="Sum",
    period=Duration.minutes(5),
)

cw.Alarm(
    self, "AlarmTokenMeledak",
    metric=metrik_token,
    threshold=500_000,               # sesuaikan dengan baseline nyatamu
    evaluation_periods=1,
    alarm_description="Token keluaran melonjak — kemungkinan loop atau penyalahgunaan",
)

Bandingkan dengan AWS Budgets dari Fase 0: budget baru berbunyi setelah beberapa jam, alarm ini berbunyi dalam hitungan menit. Untuk loop retry yang kabur, selisih itu bisa berarti puluhan dolar versus ribuan.

Latensi: dua angka yang berbeda maknanya

MetrikYang dirasakan pengguna
TimeToFirstToken"Apakah aplikasinya responsif?" — inilah yang menentukan kesan cepat
InvocationLatency"Berapa lama sampai selesai?" — naik kalau jawabannya panjang

Naiknya InvocationLatency tidak selalu berarti layanan melambat — bisa saja jawaban model memang jadi lebih panjang setelah kamu mengubah prompt. Dokumentasinya menyediakan pendekatan output tokens per second untuk membedakan keduanya. Alarm pada latensi mentah tanpa memperhitungkan panjang keluaran akan sering berbunyi palsu.

Dasbor minimum

PanelMetrikMenjawab
VolumeInvocations (Sum)Seberapa ramai
BiayaInputTokenCount + OutputTokenCount (Sum)Ke mana uang pergi
PengalamanTimeToFirstToken (p50, p99)Terasa cepat?
KesehatanInvocationThrottles, InvocationServerErrorsPerlu cross-Region inference?
Kesalahan kitaInvocationClientErrorsBug di kode atau izin

Pakai persentil, bukan rata-rata. Rata-rata latensi menyembunyikan pengalaman terburuk. Yang perlu kamu awasi adalah p99: satu dari seratus pengguna, tiap hari. Untuk aplikasi chat, p99 TimeToFirstToken adalah metrik pengalaman yang paling jujur.

Metrik bisnis yang harus kamu tambahkan sendiri

import boto3

cw = boto3.client("cloudwatch")

cw.put_metric_data(
    Namespace="AsistenHR",
    MetricData=[
        {"MetricName": "PotonganTerambil", "Value": len(potongan), "Unit": "Count"},
        {"MetricName": "GuardrailIntervensi", "Value": 1 if diblokir else 0, "Unit": "Count"},
        {"MetricName": "JawabanTidakDitemukan", "Value": 1 if tidak_tahu else 0, "Unit": "Count"},
    ],
)

Metrik ketiga sering jadi yang paling berguna: naiknya jumlah "saya tidak menemukan jawabannya" adalah sinyal paling awal bahwa knowledge base-mu tidak mencakup apa yang orang tanyakan. Metrik bawaan Bedrock tidak bisa memberi tahu itu.

Latihan: buat dasbor CloudWatch dengan lima panel di tabel di atas. Jalankan beban ringan ke aplikasimu, lalu pasang alarm pada OutputTokenCount dengan ambang dua kali baseline yang kamu amati. Uji alarmnya dengan sengaja menjalankan loop pendek.

Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.