Log Drain
Log drain meneruskan log runtime layanan Anda ke alat log Anda sendiri saat log ditulis: Datadog, Grafana Loki (termasuk Grafana Cloud), atau endpoint HTTPS apa pun. Log drain tersedia di paket Pro ke atas.
Tambahkan drain
Pemilik dan admin tim membuka Account settings → Log Drains (untuk tim yang dipilih di sidebar) lalu mengklik Add log drain:
| Drain | Yang Anda perlukan |
|---|---|
| Datadog | API key (Datadog: Organization Settings → API Keys) dan site akun Anda, seperti datadoghq.com atau datadoghq.eu. |
| Loki | URL push, seperti https://logs-prod-012.grafana.net/loki/api/v1/push; URL tanpa path akan diberi /loki/api/v1/push. Untuk Grafana Cloud, user (ID numerik stack) dan token dengan logs:write. Tenant untuk Loki multi-tenant dikirim sebagai X-Scope-OrgID. |
| HTTP | URL https:// apa pun. Zenavo mengirim JSON lewat POST, ditandatangani (lihat di bawah). |
Pilih All projects, including new ones, atau hanya beberapa proyek. Test langsung mengirim satu baris dan menunjukkan apakah baris itu sampai. Hingga 5 drain per tim.
URL, API key, dan kata sandi adalah rahasia: disimpan terenkripsi, dan konsol hanya menampilkan host dan path tujuan. Zenavo hanya mengirim ke host yang semua alamatnya publik, dan tidak mengikuti redirect. Menambahkan, mengubah, menguji, dan menghapus drain tercatat di log audit.
Apa yang dikirim
Setiap baris yang dicetak layanan yang berjalan, dengan nilai variabel disamarkan ([REDACTED]) seperti di tempat lain, diberi label tim, proyek, dan layanan. Log build tidak diteruskan.
| Drain | Format |
|---|---|
| Datadog | Dikirim ke https://http-intake.logs.<site>/api/v2/logs dengan ddsource: zenavo, service nama layanan, hostname nama proyek, dan tag project, project_id, service_id, serta team_id. |
| Loki | Satu stream per layanan, dengan label source="zenavo", project, project_id, service, service_id, dan team_id. |
| HTTP | JSON di bawah ini. |
Baris dikirim dalam batch hingga 500 baris, atau setiap 2 detik. Batch yang gagal dicoba lagi setelah 1, 5, dan 15 detik; permintaan yang ditolak drain (seperti API key yang salah, yaitu respons 4xx apa pun selain 408 dan 429) tidak dicoba lagi. Setelah itu batch dibuang. Setiap drain menampung hingga 10.000 baris; bila drain tidak sanggup mengikuti, baris yang lebih baru dibuang. Konsol menampilkan pengiriman terakhir setiap drain atau alasan gagalnya, dan berapa baris yang dibuang. Log di konsol, baik langsung maupun tersimpan, tidak pernah terpengaruh oleh drain.
Pengiriman bersifat at-least-once: saat control plane di-restart, beberapa menit terakhir mungkin dikirim lagi.
Payload HTTP
{
"logs": [
{
"time": "2026-10-22T08:00:00.123456789Z",
"message": "GET /cart 200 12ms",
"team_id": "team_…",
"project_id": "proj_…",
"project": "shop",
"service_id": "svc-…",
"service": "web"
}
]
}Respons 2xx apa pun dianggap terkirim. Setiap permintaan membawa X-Zenavo-Timestamp (detik Unix) dan X-Zenavo-Signature: v1=<hex>, yaitu HMAC-SHA256 dari <timestamp>.<body mentah> dengan signing secret drain, skema yang sama dengan webhook notifikasi. Secret (whsec_…) ditampilkan sekali saat Anda menambahkan drain; New secret menggantinya dan menampilkan yang baru sekali.
Paket
Log drain memerlukan paket Pro, Team, atau Enterprise. Saat tim pindah ke paket tanpa fitur ini, drain-nya berhenti meneruskan; drain masih bisa dimatikan, diubah, atau dihapus, dan mulai lagi setelah upgrade.