Skip to content

Tiga Fix untuk Dashboard Monitoring Server yang Noise

Adityo Guni Waluyo

Dashboard monitoring server jadi noise saat item perhatian puluhan tanpa organisasi. Tiga fix kecil mengubah grid datar jadi workflow yang bisa dipakai.

Ringkasan

Dashboard monitoring punya terlalu banyak item perhatian di satu grid datar, jadi yang kritis susah ketemu. Penulis bikin tiga fitur: search dengan debounce di API, tombol filter severity, dan grouping item per server yang bisa di-collapse berdasarkan severity terburuk. Ketiganya bikin workflow jadi cepat, langsung keliatan masalah kritis tanpa scroll panjang.

Grid Datar yang Menjadi Tembok Teks

Saya punya sembilan server yang dipantau lewat dashboard kami. Setiap server punya kelompok penemuan (findings): disk hampir penuh, layanan berhenti, container mati, metrik CPU melonjak. Awalnya saya tampilkan semua item perhatian (attention) di satu grid datar, semua severity campur jadi satu. Hasilnya? Saya scroll melewati empat puluh item untuk menemukan satu hal kritis yang perlu diperbaiki sekarang juga.

Problemnya bukan data yang kurang. Problemnya terlalu banyak data yang tidak diorganisir.

Saya coba tebakan pertama: cukup tambahkan tombol sort by severity di frontend. Ternyata meleset, sort only reorders, bukan filters. Item tetap ada semua, hanya urutannya berubah. Saya tetap harus scroll. Yang saya butuhkan sebenarnya tiga hal: cara mencari server tertentu, cara memfilter item berdasarkan tingkat keparahan, dan cara mengelompokkan item per server supaya saya bisa collapse yang tidak urgent.

Search dengan Debounce, Filter Severity, dan Grouped Attention

Fitur pertama: search input yang memfilter item perhatian di sisi server. Bukan filtering client-side yang harus menunggu seluruh data dimuat dulu, tapi filtering langsung di API dengan parameter q. Implementasinya sederhana, substring case-insensitive match terhadap nama server, pesan alert, dan teks aksi. Tapi ada satu detail penting: debounce. Tanpa debounce, setiap karakter yang diketik memicu request baru ke server.

Debounce bekerja dengan menunda eksekusi search sampai user berhenti mengetik selama interval tertentu. Seperti dijelaskan oleh MDN: "Debouncing, in the context of programming, means to discard operations that occur too close together during a specific interval, and consolidate them into a single invocation." [3] Yang saya pelajari dari Nielsen Norman Group: total latency (debounce + network + render) harus tetap di bawah satu detik agar terasa instan. [4] Jadi kalau server response p95 sudah 600ms, debounce 300ms sudah memakan seluruh budget waktu.

Fitur kedua: tombol-tombol segmented untuk filter severity, All, Warning+, Critical. Saya pilih segmented buttons daripada dropdown karena di dashboard monitoring, user tahu apa yang dicari. Mereka tidak perlu membuka menu untuk memilih. Satu klik, langsung filter. Ini prinsip yang juga disebut oleh desainer fleet management: "Filters as first-class citizens", filter yang bisa diakses langsung, tersimpan per user, dan bisa dikomposisi. [1] Setiap tombol menambahkan parameter min_sev ke request server, jadi filtering terjadi di backend. Search dan severity filter bekerja bersama secara independen.

Fitur ketiga dan paling penting: mengubah grid datar menjadi grup per server yang bisa di-collapse. Server-side, fungsi attention_groups() mengelompokkan semua item berdasarkan nama server, lalu menghitung severity terburuk, jumlah item, dan waktu sejak masalah pertama untuk setiap grup. Algoritmanya sort by worst severity (descending), jumlah item (descending), nama server (ascending). Grup dengan critical issues muncul di atas. Di frontend, critical groups dan dua grup teratas otomatis expanded, sisanya collapsed.

Netdata pernah menulis tentang tantangan ini: "Dashboards show 100% green because 15% of the fleet stopped reporting and nobody noticed." [2] Grouped attention view adalah salah satu jawaban untuk masalah itu. Anda tidak hanya melihat status hijau semua, tapi juga tahu tepat di mana masalahnya berada.

Polanya Bekerja Bersama

Tiga fitur ini bukan fitur terpisah. Mereka membentuk satu workflow: saya buka dashboard, melihat grup critical teratas langsung expanded, memfilter ke severity critical untuk mempersempit fokus, lalu mencari server tertentu jika perlu. Setiap langkah mengurangi noise, bukan menambah layer.

Prinsip yang saya ambil dari pengalaman ini: "Two taps or three words to find anything" tidak perlu dua klik atau tiga kata untuk menemukan yang dicari. [1] Ketika monitoring dashboard Anda memiliki lebih dari sepuluh item perhatian, Anda butuh filter, grouping, dan search. Ketiganya. Bukan salah satu.

Cara saya menerapkannya: Python di backend menghitung grup dan filter, JavaScript di frontend hanya merender. Tidak ada logic bisnis di frontend. Search, severity, dan grouping semua keputusan server. Frontend hanya menerima JSON yang sudah ter-filter dan menampilkannya.

Sumber

  1. Fleet Management UI Design: 7 Challenges & Dashboard Fixes — Volpis, 2026. "Filters as first-class citizens" dan "Two taps or three words to find anything."
  2. Fleet Observability: Linux Edge Device Monitoring — Netdata. "Dashboards show 100% green because 15% of the fleet stopped reporting and nobody noticed."
  3. Debounce — MDN Web Docs — MDN. Definisi debounce: "discard operations that occur too close together during a specific interval, and consolidate them into a single invocation."
  4. Response Times: The 3 Important Limits — Nielsen Norman Group. Ambang persepsi: 0.1s instan, 1s batas alur pikir, 10s batas atensi.

Artikel terkait