Langsung ke konten

Notifikasi ​

Zenavo mengirim email ke tim Anda saat ada yang perlu ditangani, sehingga Anda tidak perlu terus membuka konsol, dan bisa mengirim peringatan yang sama ke Slack, Discord, Telegram, atau webhook Anda sendiri.

Event ​

EventKapan dikirim
Deployment failedDeploy atau rollback tidak selesai. Email menyebutkan apakah gagal saat membangun layanan atau saat rollout.
Server setup failedPenyiapan atau pemasangan ulang server tidak selesai. Email menyebutkan alasannya, dan sampai kapan kredensial SSH disimpan untuk dicoba lagi.
Service suspendedLayanan restart lebih sering dari batas crash-nya dan dihentikan.
Server offlineServer melewatkan 3 pemeriksaan status berturut-turut (sekitar 3 menit). Email kedua dikirim saat server kembali menjawab.
Disk or memory almost fullDisk server di atas 90%, atau memorinya tetap di atas 90% selama 3 pemeriksaan berturut-turut. Peringatan bisa muncul lagi setelah penggunaan turun di bawah 85%.
New SSH login sourceSebuah alamat IP masuk ke salah satu server tim lewat SSH untuk pertama kalinya. Wajar jika Anda baru terhubung dari jaringan baru; jika tidak, ini tanda bahaya.
Usage limitTransfer image tim mencapai 80% atau 100% dari batas periode tagihan. Pada 100%, server berhenti menarik image baru.

Setiap peringatan dikirim paling banyak sekali per jam untuk proyek, layanan, atau server yang sama. Gangguan singkat berupa satu atau dua pemeriksaan yang terlewat tidak mengirim apa pun.

Email keamanan tentang akun Anda sendiri (login dari perangkat baru, login CLI yang disetujui, API key baru) dijelaskan di Keamanan. Email itu hanya dikirim ke Anda, aktif secara bawaan untuk semua peran, dan muncul di Security pada halaman Notifications.

Siapa yang menerima ​

Email dikirim ke anggota tim yang memiliki proyek atau server:

  • Pemilik dan admin menerima semua event sampai mereka mematikannya.
  • Member tidak menerima apa pun sampai mereka menyalakan event.
  • Viewer tidak pernah menerima notifikasi.

Pilih event Anda di Account settings → Notifications. Pilihan ini per akun dan berlaku untuk semua tim tempat Anda bergabung.

Isi email ​

Nama proyek, layanan, atau server, waktunya (UTC), dan tautan ke halaman terkait di konsol. Email tidak pernah berisi nilai variabel, rahasia, perintah, atau teks log. Buka konsol untuk membaca log.

Channel ​

Admin tim juga bisa mengirim notifikasi tim ke aplikasi chat dan webhook: Account settings → Notifications → Team channels, untuk tim yang dipilih di sidebar. Setiap channel memilih event-nya sendiri; selain event di atas, channel bisa menerima Deployment succeeded (tidak pernah dikirim lewat email). Channel menerima peringatan yang sama dengan email, dengan batas sekali per jam yang sama, dan tidak bergantung pada pengaturan email siapa pun.

ChannelYang Anda perlukan
SlackURL incoming webhook untuk channel (https://hooks.slack.com/services/…).
DiscordWebhook channel: pengaturan channel → Integrations → Webhooks (https://discord.com/api/webhooks/…).
TelegramToken bot dari @BotFather dan chat ID (angka seperti -1001234567890, atau @username channel publik). Tambahkan bot ke chat terlebih dahulu.
WebhookURL https:// apa pun. Zenavo mengirim JSON lewat POST, ditandatangani (lihat di bawah).

Test langsung mengirim pesan dan menunjukkan apakah pesan itu sampai. Setiap channel menampilkan pengiriman terakhirnya, atau alasan gagalnya; pengiriman yang gagal dicoba lagi tiga kali dalam sekitar 13 menit. Hingga 20 channel per tim.

URL webhook dan token bot adalah rahasia: disimpan terenkripsi, dan konsol hanya menampilkan host atau chat-nya. Zenavo hanya mengirim ke host yang semua alamatnya publik, dan tidak mengikuti redirect.

Payload webhook ​

json
{
  "type": "deploy_failed",
  "team_id": "team_…",
  "subject": "Deployment failed: shop",
  "text": "The deployment of project \"shop\" failed at 2026-10-19 08:12 UTC.\nIt failed while building service \"web\".\n",
  "url": "https://zenavo.app/projects/proj_…/deployments/job_…",
  "time": "2026-10-19T08:12:03Z"
}

type adalah salah satu dari deploy_failed, deploy_succeeded, service_suspended, server_offline (juga dikirim saat server kembali), server_resources, usage_limit, atau test. Respons 2xx apa pun dianggap terkirim.

Setiap permintaan membawa X-Zenavo-Event, X-Zenavo-Timestamp (detik Unix), dan X-Zenavo-Signature: v1=<hex>, yaitu HMAC-SHA256 dari <timestamp>.<body mentah> dengan signing secret channel. Secret (whsec_…) ditampilkan sekali saat Anda menambahkan webhook; Edit tidak bisa menampilkannya lagi, tetapi Anda bisa merotasinya lewat API. Verifikasi tanda tangan atas byte mentah, dan tolak timestamp yang sudah lama:

js
import crypto from 'node:crypto'

function verify(rawBody, headers, secret) {
  const ts = headers['x-zenavo-timestamp']
  const expected = 'v1=' + crypto.createHmac('sha256', secret).update(`${ts}.${rawBody}`).digest('hex')
  const given = headers['x-zenavo-signature'] ?? ''
  const fresh = Math.abs(Date.now() / 1000 - Number(ts)) < 300
  const a = Buffer.from(given), b = Buffer.from(expected)
  return fresh && a.length === b.length && crypto.timingSafeEqual(a, b)
}

Tidak berafiliasi dengan Zeabur.