Mengawasi 4.000 Server Discord: Grafana, PostHog, dan Apa yang Mereka Tunjukkan kepada Kami
Sebuah loop yang diam-diam menghasilkan separuh trafik kami, tiga juta request sia-sia per hari, dan serangan yang selesai dalam satu menit. Apa yang dilihat pemantauan kami, dan apa yang sengaja tidak dilihatnya.

AlphaCloud berjalan di sedikit lebih dari 4.000 server Discord, tersebar di empat shard. Itu berarti empat proses, masing-masing melayani sebagian server, dan semuanya berbicara dengan API yang sama.
Di ukuran seperti itu, sebuah masalah jarang menunjukkan dirinya dengan merusak sesuatu. Jauh lebih sering semuanya berjalan, hanya lebih mahal, lebih lambat, atau lebih berisik daripada seharusnya. Karena itulah kami membangun ulang pemantauan kami pada September 2026. Artikel ini menunjukkan seperti apa bentuknya dan apa yang ditunjukkannya kepada kami di minggu-minggu pertama.
Dua alat, dua pertanyaan
Grafana menjawab pertanyaan: apa yang sedang dilakukan bot? Bot dan API melaporkan metrik ke Prometheus (request, waktu respons, tingkat error, respons Discord, pemakaian AI), dan log masuk ke Loki. Setiap node server punya stack-nya sendiri, dan Grafana hanya bisa dijangkau lewat jaringan privat, tidak dari internet.
PostHog menjawab pertanyaan: apa yang dialami orang di situs web kami? Tampilan halaman, error browser, waktu muat, dan, dengan persetujuan, sesi yang direkam. PostHog baru berjalan setelah kamu setuju di banner cookie.
Pemisahan ini disengaja. Grafana melihat mesin, PostHog melihat antarmuka. Kalau keduanya dijejalkan ke satu alat, hasilnya entah data pengguna di log server atau beban server di analitik produk.
Apa yang ditemukannya
Sebuah loop yang menghasilkan separuh trafik
Polling dengan waktu berakhir ditutup oleh sebuah tugas latar belakang yang setiap menit memeriksa apakah ada yang sudah kedaluwarsa. Tugas itu melakukannya untuk setiap server satu per satu. Dengan sekitar 1.000 server per shard dan empat shard, hasilnya sekitar 70 request per detik, hampir semuanya menjawab "tidak ada yang kedaluwarsa".
Kami baru menyadarinya di Grafana, setelah kami memecah request bot ke API berdasarkan path: satu endpoint ini saja lebih dari separuh seluruh trafik. Semuanya berjalan. Hanya saja ada beban yang tidak pernah diminta siapa pun.
Kini setiap shard bertanya sekali per menit: "Server mana yang punya polling kedaluwarsa?" dan hanya mengambil detail untuk server-server itu. Sekitar 4.200 request per menit menjadi sekitar empat.
Tiga juta kali "belum diatur"
Pola yang sama, tempat yang berbeda: beberapa modul (catatan support, ketidakhadiran, daftar tim, statistik bot, newsletter) secara rutin membaca pengaturan setiap server di dalam loop-nya. Di sebagian besar server, modul tertentu sama sekali belum diatur, jadi jawabannya "tidak ditemukan". Sekitar tiga juta kali sehari.
Perbaikannya tidak spektakuler: jawaban "belum diatur" kini diingat selama 30 menit. Itu hanya aman karena setiap modul ini mengirim pembaruan ke bot begitu disimpan di panel web, jadi mengatur sebuah modul tidak pernah berarti menunggu 30 menit.
Gangguan Discord bukan bug kami
Saluran error tim kami memposting setiap aksi yang gagal sebagai "Runtime Error", lengkap dengan referensi unik dan sebagainya. Itu termasuk saat Discord sendiri menjawab dengan error server. Itu bukan bug di pihak kami dan bukan sesuatu yang bisa kami perbaiki, dan di saluran itu tampilannya persis seperti cacat sungguhan.
Sekarang hal itu dicatat sebagai peringatan, dan anggota diminta mencoba lagi dalam beberapa detik, bukan ditawari tautan untuk mengirim laporan bug. Saluran error yang separuh pesannya bukan error, lama-lama tidak dibaca lagi. Lalu kamu melewatkan error yang sebenarnya.
Serangan yang berlangsung satu menit
Suatu sore di akhir September, halaman beranda kami menerima sedikit lebih dari 500.000 request dalam satu menit, dari banyak negara sekaligus. Sebagian besar dihentikan sebelum mencapai server kami, dan semenit kemudian trafik sudah kembali normal.
Kami tidak melihatnya karena ada yang down. Kami melihatnya karena angkanya tidak cocok dengan bagian grafik lainnya. Itulah tugas sebenarnya dari pemantauan: bukan membunyikan alarm saat semuanya terbakar, tapi menunjukkan di mana sesuatu tidak sesuai dengan keadaan normal.
Apa yang sengaja tidak dilihat pemantauan kami
Aturan di sini sama pentingnya dengan dasbornya:
- Tidak ada alamat IP pengunjung di log. Kebijakan privasi kami menjanjikannya, jadi kami menghapusnya di dua tempat: saat log akses ditulis dan sekali lagi sebelum disimpan.
- Tidak ada ID server, pengguna, atau pesan di metrik. Setiap metrik hanya dipecah berdasarkan atribut kasar (modul, kelas status, shard). Itu melindungi data dan menjaga database metrik tetap kecil.
- Rekaman sesi menampilkan antarmuka kami, bukan kontenmu. Hanya teks yang berasal kata per kata dari file terjemahan kami yang tetap terbaca. Nama server, saluran, dan pengguna, input, serta pratinjau disamarkan. Kalau daftar teks yang diizinkan tidak bisa dimuat, semuanya disamarkan.
- Semua di situs web hanya setelah persetujuan. Yang juga berarti angka di sana adalah batas bawah. Untuk jumlah halaman yang sebenarnya, kami melihat total anonim dari penyedia jaringan kami.
Detailnya ada di kebijakan privasi.
Apa yang kami ambil darinya
Yang mahal jarang sekali yang rusak. Tidak satu pun temuan di atas menghasilkan error. Semuanya menghasilkan beban, biaya, dan kebisingan, dan tanpa mengukur, kamu tidak akan pernah melihat semua itu.
Bertanya per server tidak bisa diskalakan. Kedua temuan besar punya pola yang sama: sebuah loop atas setiap server yang menanyakan masing-masing satu per satu. Jawabannya hampir selalu pertanyaan yang sama, ditanyakan sekali untuk semuanya.
Sebuah peringatan harus jarang, kalau tidak, itu bukan peringatan. Karena itu hanya Grafana yang mem-ping tim, dan hanya untuk hal yang membutuhkan seseorang turun tangan. Jenis error baru dari PostHog masuk ke saluran tanpa ping.
Kalau kamu sendiri menjalankan server Discord dan ingin melihat modul-modul yang disebut di sini: polling, catatan support, dan ketidakhadiran ada di panel web, dan semuanya dijelaskan di dokumentasi.
Artikel lainnya
Apa yang Kami Pelajari dari Menjalankan Bot di Lebih dari 2.000 Server Discord
Empat hal yang bekerja berbeda dalam skala besar dibandingkan yang kamu bayangkan saat menulis kodenya.
Di balik layarSaat Penyedia AI Kami Mematikan Modelnya
Pergantian model, jawaban kosong tanpa error, dan tagihan yang tiba-tiba berlipat-lipat lebih tinggi. Apa yang rusak, dan kenapa penyebabnya begitu sulit terlihat.
Di balik layarHukum di Dalam Kode Kami
Tombol pembatalan yang harus bekerja tanpa login. Formulir yang tidak boleh menolakmu. Kenapa kewajiban hukum bagi kami adalah arsitektur, bukan teks standar.