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 endpointbedrock-runtime. InputTokenCountdanOutputTokenCount— sinyal biaya yang muncul dalam hitungan menit.InvocationLatencymengukur sampai token terakhir;TimeToFirstTokenkhusus untuk streaming.InvocationThrottlestidak dihitung sebagaiInvocationsmaupun error — ia metrik tersendiri.- Banyaknya throttle yang terlihat bergantung pada setelan retry SDK-mu.
Metrik yang tersedia
| Metrik | Satuan | Menjawab |
|---|---|---|
Invocations | SampleCount | Berapa permintaan berhasil |
InvocationLatency | Milidetik | Waktu sampai token terakhir diterima |
TimeToFirstToken | Milidetik | Waktu sampai token pertama (streaming) |
InputTokenCount | SampleCount | Token masukan |
OutputTokenCount | SampleCount | Token keluaran |
InvocationThrottles | SampleCount | Permintaan yang di-throttle |
InvocationClientErrors | SampleCount | Error di sisi klien (4xx) |
InvocationServerErrors | SampleCount | Error 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
| Metrik | Yang 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
| Panel | Metrik | Menjawab |
|---|---|---|
| Volume | Invocations (Sum) | Seberapa ramai |
| Biaya | InputTokenCount + OutputTokenCount (Sum) | Ke mana uang pergi |
| Pengalaman | TimeToFirstToken (p50, p99) | Terasa cepat? |
| Kesehatan | InvocationThrottles, InvocationServerErrors | Perlu cross-Region inference? |
| Kesalahan kita | InvocationClientErrors | Bug 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.