Di episode ini kita membuat Wazuh tetap gesit saat beban tumbuh: tuning JVM heap indexer, retention policy dengan index lifecycle, ukuran shard yang wajar, serta queue dan worker di manager. Kita juga belajar menghitung EPS versus sumber daya untuk 100, 1000, dan 10.000 agent.

Di episode 18 kita menyambungkan Wazuh ke TheHive, Shuffle, dan jalur notifikasi. Semakin banyak yang dikirim keluar, semakin besar beban yang ditanggung manager dan indexer. Di episode 19 ini kita mundur selangkah untuk merawat fondasinya: bagaimana membuat Wazuh tetap responsif ketika jumlah agent dan volume event naik.
Kita akan membahas dua hal yang sering tertukar. Performance tuning adalah tindakan agar komponen yang ada bekerja efisien, seperti mengatur heap JVM indexer atau memperbesar queue. Capacity planning adalah perhitungan ke depan untuk memastikan sumber daya cukup, seperti berapa CPU, RAM, dan disk untuk 100, 1000, atau 10.000 agent.
Aturan emasnya sederhana: jangan menambah sumber daya sebelum membuang pemborosan. Selalu ukur dulu, lalu tuning, baru putuskan menambah hardware. Kita mulai dari satuan yang paling sering dipakai untuk mengukur beban, yaitu events per second atau EPS.
EPS adalah jumlah event yang masuk ke Wazuh per detik. Semua komponen, dari agent, manager, sampai indexer, diukur dengan satuan ini. Kalian bisa memperkirakan total EPS dengan rumus sederhana:
Total EPS sama dengan jumlah agent dikalikan rata-rata event per agent per detik. Satu agent biasa menghasilkan sekitar 1 sampai 5 EPS tergantung sumber yang dipantau. Agent Windows dengan banyak event channel cenderung lebih rajin daripada agent Linux yang hanya membaca beberapa berkas log.
Dari EPS inilah kita menurunkan dua kebutuhan penting. Pertama, kebutuhan compute untuk memproses event tepat waktu. Kedua, kebutuhan storage, karena setiap event yang masuk tersimpan sebagai dokumen di indexer. Jadi sebelum bicara hardware, biasakan menghitung EPS dulu.
Info
Rata-rata EPS sangat bergantung pada jenis agent dan konfigurasi logging. Catat angka aktual dari deployment kalian selama beberapa hari, jangan hanya mengandalkan asumsi dari halaman dokumentasi.
Tuning tanpa data hanya menebak. Sebelum mengubah apa pun, kumpulkan angka aktual dari dashboard dan API. Beberapa perintah berguna untuk membaca kondisi cluster:
curl -sk https://localhost:9200/_cat/health?v
curl -sk https://localhost:9200/_cat/indices/wazuh-alerts*?h=index,docs.count,store.sizeUntuk sisi manager, baca berkas state yang mencatat antrean dan event yang dibuang:
cat /var/ossec/var/run/wazuh-remoted.statePerhatikan field discarded_count. Jika angka ini terus naik, berarti event mulai dibuang sebelum sempat diproses. Itu tanda bahwa antrean atau worker perlu disetel, bukan tanda untuk langsung menambah RAM.
Indexer berbasis OpenSearch berjalan di atas Java, dan heap JVM adalah kunci utama performanya. Heap yang terlalu kecil membuat garbage collection bekerja terlalu sering, sementara heap yang terlalu besar bisa membuat sistem operasi kekurangan memori untuk page cache.
Setelan heap ada di berkas jvm.options milik indexer:
-Xms4g
-Xmx4gAturan praktisnya, nilai minimum dan maksimum dibuat sama agar Java tidak bolak-balik mengubah ukuran heap. Patokan umumnya sekitar separuh dari total RAM node indexer, dengan batas wajar 4 GB untuk deployment kecil dan 8 sampai 16 GB untuk deployment besar.
Info
Setelah mengubah heap, restart indexer dan pantau pemakaiannya. Naikkan heap bertahap sambil memperhatikan CPU dan latency query, bukan sekadar meniru angka milik orang lain.
Data alert Wazuh bertambah tanpa henti, dan storage selalu jadi yang pertama menyerah. Index lifecycle mengatur siklus hidup indeks: kapan harus di-rollover, dipindah, dan akhirnya dihapus. Wazuh memakai kebijakan ini lewat mekanisme Index State Management pada indexer.
Contoh kebijakan sederhana: indeks alert aktif selama satu hari, lalu dihapus setelah 90 hari.
{
"policy": {
"description": "Retensi alert Wazuh selama 90 hari",
"default_state": "hot",
"states": [
{
"name": "hot",
"actions": [
{ "rollover": { "min_index_age": "1d" } }
],
"transitions": [
{ "state_name": "delete" }
]
},
{
"name": "delete",
"actions": [
{ "delete": {} }
]
}
]
}
}Pilih masa retensi sesuai kebutuhan compliance. Regulasi seperti PCI DSS meminta periode penyimpanan tertentu, jadi sesuaikan dengan kewajiban yang berlaku, bukan sekadar berapa sisa disk. Ingat, data yang dihapus tidak bisa diambil kembali kecuali ada backup terpisah.
Setiap indeks dibagi menjadi shard, dan shard terlalu kecil atau terlalu banyak sama-sama merepotkan. Terlalu kecil membuat banyak shard kosong yang hanya menambah overhead. Terlalu besar membuat operasi recovery dan redistribusi lambat.
Patokan umumnya satu shard menampung sekitar 5 sampai 20 GB data. Dengan rollover harian, ukuran indeks harian bisa dikontrol agar tetap masuk rentang itu. Ukuran shard sebenarnya bisa diperkirakan dari EPS dikalikan durasi rollover, lalu dikalikan ukuran rata-rata satu alert.
Jangan tergoda menambah shard hanya agar terlihat scalable. Perhatikan apakah query dashboard sudah lambat, baru sesuaikan jumlah shard dan skala node indexer.
Manager menerima event dari ribuan agent lewat wazuh-remoted, lalu memprosesnya di wazuh-analysisd. Dua titik ini punya antrean dan worker yang bisa disetel ketika terjadi lonjakan.
<remote>
<connection>secure</connection>
<port>1514</port>
<protocol>tcp</protocol>
<queue_size>196608</queue_size>
</remote>Perbesar queue hanya jika antrean menumpuk pada saat lonjakan singkat. Tambah worker hanya pada kategori event yang benar-benar menjadi titik macet. Menambah semua worker ke nilai maksimum justru memicu banyaknya context switching dan bisa memperlambat semuanya.
Setelah tuning, kita hitung sumber daya. Angka berikut adalah titik awal yang wajar, bukan harga mati:
Disk menyusul dengan rumus sederhana: total EPS dikali 86.400 detik dikali lama retensi, lalu dikalikan ukuran rata-rata satu alert. Karena angka ini bisa cepat membengkak, gunakan rumus tersebut untuk menantang kebijakan retensi kalian sendiri.
Di episode 19 ini kalian mengenal cara merawat Wazuh agar tetap gesit:
Inti yang harus dibawa pulang:
Di episode 20 kita membahas sisi yang justru paling sering terlupakan: memonitor Wazuh itu sendiri dan menyiapkan backup recovery yang benar. Sampai jumpa!