Belajar DNS - Performance Tuning & Observability
Series/Belajar DNS/Episode 19
Episode 19 of 23

Belajar DNS - Performance Tuning & Observability

Episode ini membahas tuning performa stack DNS: ukuran packet cache dan record cache, jumlah threads, cache-ttl dan negative-cache-ttl, tuning LMDB, serta observability modern dengan structured logging, OpenTelemetry tracing, endpoint Prometheus, dan webserver API stats.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

DNS yang sehat harus diukur, bukan ditebak. Episode 19 menutup dua kebutuhan production sekaligus: membuat server DNS kalian cepat dan membuatnya terbaca — sehingga kalian tahu persis di mana beban berada dan apa yang terjadi saat performa menurun.

Bagian pertama membahas tuning: cache, threads, dan TTL. Bagian kedua membahas observability modern: structured logging, OpenTelemetry, Prometheus, dan statistik webserver yang dimiliki ketiga daemon PowerDNS.

Tuning Cache

Packet Cache dan Record Cache

Cache adalah pengganda performa terbesar di stack DNS. Recursor menyeimbangkan dua cache:

Tuning cache recursor.yml
max-cache-entries: 2000000
packetcache-size: 500000
cache-ttl: 20
max-negative-ttl: 3600

max-cache-entries mengatur ukuran record cache, packetcache-size untuk packet cache. Nilai di atas adalah titik awal untuk beban menengah — naikkan bertahap dan amati memori. cache-ttl dan max-negative-ttl mengendalikan berapa lama jawaban positif dan negatif bertahan.

Mengukur Efek Tuning

Setiap perubahan harus terbukti:

Ukur hit rate dan query time
rec_control get cache-hits
rec_control get cache-misses
dig @127.0.0.1 example.com A +noall +stats | grep 'Query time'

Hit rate yang tinggi berarti sebagian besar query dijawab dari cache. Jika cache-hits rendah sementara cache-misses tinggi, ukuran cache terlalu kecil atau TTL terlalu pendek.

Tuning Threads dan LMDB

Jumlah Threads

Recursor dan Authoritative memakai model threads. Menambah threads memakai lebih banyak CPU tapi meningkatkan paralelisme:

Tuning threads
threads: 8
reuseport: true

reuseport memungkinkan beberapa socket mendengarkan port yang sama, mendistribusikan beban ke seluruh CPU core.

Tuning LMDB

Jika memakai backend lmdb untuk Authoritative, ukuran peta memori perlu disesuaikan:

Tuning lmdb di pdns.conf
lmdb-filename=/var/lib/powerdns/lmdb
lmdb-size=1073741824

lmdb-size menentukan ukuran peta memori dalam byte. Setelah zone bertumbuh besar, monitor penggunaan dan perbesar sebelum penuh — LMDB yang penuh akan menolak operasi tulis.

Structured Logging

Log Terstruktur di Authoritative 5.1

PowerDNS Authoritative 5.1 memperkenalkan structured logging berformat JSON. Log seperti ini bisa dibaca mesin dan dianalisis otomatis:

Structured logging di Authoritative
sudo systemctl restart pdns
journalctl -u pdns -n 10 --no-pager | grep -i '"level"'

Setiap baris log kini berupa objek JSON berisi level, pesan, dan field kontekstual. Ini mengubah log dari teks yang diurai manual menjadi data yang bisa di-query — fondasi observability modern.

OpenTelemetry dan Prometheus

OpenTelemetry Tracing

Recursor 5.4 dan dnsdist 2.1 mendukung OpenTelemetry tracing: setiap query bisa dilacak lintas daemon, memberi gambaran end-to-end tentang di mana waktu hilang.

Export OpenTelemetry di dnsdist.yml
openTelemetry:
  enabled: true
  endpoint: otel-collector:4317

Endpoint Prometheus

Ketiga daemon mengekspos metrik Prometheus. dnsdist lewat webserver API:

Webserver API di dnsdist.yml
webserver:
  - address: 0.0.0.0:8083
    apiKey: sekret-api

Lalu scrape metriknya:

Scrape metrik Prometheus
curl -s http://127.0.0.1:8083/api/v1/servers/localhost/statistics

curl .../statistics mengembalikan metrik seperti query per detik, cache hits, dan jumlah respon SERVFAIL dalam format JSON — siap digabung ke Grafana. rec_control get-all menyediakan metrik recursor serupa.

Membangun Dashboard

Metrik yang Wajib Dipantau

Dashboard DNS kalian minimal menampilkan metrik ini:

  • QPS (query per second) per daemon.
  • Cache hit rate dan ukuran cache.
  • Latensi query dari sisi klien.
  • Jumlah SERVFAIL dan NXDOMAIN — indikator awal masalah.
  • Status backend di dnsdist (up/down).
Kumpulkan metrik untuk dashboard
rec_control get-all > /tmp/rec-metrics.txt
dnsdist -c
showStats()
quit()

Penutup

Episode 19 membuat stack DNS kalian cepat dan terbaca: tuning cache, threads, dan LMDB yang terukur, structured logging berformat JSON, OpenTelemetry tracing, serta metrik Prometheus yang siap divisualisasikan.

Inti yang harus dibawa pulang:

  • max-cache-entries, packetcache-size, dan TTL adalah tuas tuning utama Recursor.
  • Hit rate cache dan query time adalah bukti bahwa tuning bekerja.
  • reuseport menyebar beban ke seluruh core; lmdb-size mencegah database penuh.
  • Structured logging mengubah log menjadi data JSON yang bisa dianalisis.
  • Recursor 5.4 dan dnsdist 2.1 mendukung OpenTelemetry tracing.
  • Webserver API menyediakan metrik Prometheus untuk dashboard Grafana.

Di episode 20 selanjutnya kita akan membahas PowerDNS API dan automation IaC — REST API dengan API key untuk mengelola zone, records, TSIG, dan crypto keys, provisioning dengan curl dan Python, serta integrasi Terraform provider dan ExternalDNS di Kubernetes.

Belajar DNS - Performance Tuning & Observability | Belajar DNS