Uptime Kuma ile DNS İzleme ve Alan Adı Sağlık Kontrolü

DNS izleme konusu, çoğu sysadmin’in “benim DNS’im zaten çalışıyor, ne izleyeceğim ki?” diye geçiştirdiği ama sonra gece 2’de telefon ziliyle uyandığında pişman olduğu bir alan. Uptime Kuma tam burada devreye giriyor ve DNS sağlığını görsel, anlaşılır bir şekilde takip etmenizi sağlıyor.

DNS İzleme Neden Bu Kadar Kritik?

Bir web sitesinin erişilemez olmasının tek nedeni sunucunun çökmesi değil. Çoğu zaman sorun DNS katmanında yaşanıyor. Alan adı süresi dolan bir müşteri, nameserver değişikliği sonrası propagasyon sorunu, ya da TTL yanlış yapılandırılmış bir kayıt… Bunların hepsi son kullanıcı için aynı sonucu doğuruyor: site açılmıyor.

Uptime Kuma’nın DNS izleme özelliği bu senaryoları proaktif olarak yakalamanızı sağlıyor. Sadece “kayıt var mı” değil, “kayıt doğru değeri gösteriyor mu” sorusuna da cevap veriyor. Bu fark kritik. Bir saldırgan DNS hijacking yapıp A kaydınızı başka bir IP’ye yönlendirdiğinde, siteniz teknik olarak “çalışıyor” görünebilir ama tamamen yanlış bir sunucuya işaret ediyor olabilir.

Uptime Kuma Kurulumu

Eğer Uptime Kuma henüz kurulu değilse, Docker ile hızlıca ayağa kaldıralım:

docker run -d 
  --restart=always 
  -p 3001:3001 
  -v uptime-kuma:/app/data 
  --name uptime-kuma 
  louislam/uptime-kuma:1

Docker Compose tercih edenler için:

mkdir -p /opt/uptime-kuma
cat > /opt/uptime-kuma/docker-compose.yml << 'EOF'
version: '3.8'
services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    restart: always
    ports:
      - "3001:3001"
    volumes:
      - ./data:/app/data
EOF

cd /opt/uptime-kuma
docker compose up -d

Kurulum sonrası http://sunucu-ip:3001 adresine gidip admin hesabı oluşturuyorsunuz. İlk kurulumda 5-10 dakika yeterli.

DNS Monitor Türleri ve Ne İşe Yararlar

Uptime Kuma’da yeni bir monitor eklerken monitor tipi olarak DNS seçtiğinizde, karşınıza birkaç yapılandırma seçeneği çıkıyor. Bunları tek tek açıklayalım.

Resolver (DNS Sunucusu) Seçimi

İzleme yaparken hangi DNS sunucusuna sorgu atacağınızı belirtiyorsunuz. Burada dikkatli olun çünkü bu seçim sonuçları doğrudan etkiliyor.

  • 8.8.8.8 (Google): Genel erişilebilirlik testi için ideal
  • 1.1.1.1 (Cloudflare): Hız ve güvenilirlik açısından iyi alternatif
  • Kendi nameserver’ınız: Authoritative kaynak kontrolü için zorunlu
  • İç ağ DNS: Kurumsal ortamlarda iç DNS sağlığını test etmek için

Eğer Cloudflare veya başka bir CDN kullanıyorsanız, hem 8.8.8.8 hem de kendi nameserver’ınıza ayrı monitor eklemek mantıklı. Bu sayede bir nameserver’ın sorun yaşamasını diğerinden bağımsız olarak izliyorsunuz.

Record Type Seçenekleri

Uptime Kuma şu DNS kayıt tiplerini izleyebiliyor:

  • A: IPv4 adresi döndürür, web sunucusu yönlendirmesi
  • AAAA: IPv6 adresi, modern altyapılar için önemli
  • CNAME: Alias kaydı, CDN veya harici servis entegrasyonları
  • MX: Mail sunucusu kaydı, e-posta altyapısı için kritik
  • NS: Nameserver kaydı, alan adının yetkili sunucuları
  • TXT: SPF, DKIM, DMARC ve domain doğrulama kayıtları
  • SOA: Start of Authority, zone bilgisi

İlk DNS Monitor’ünüzü Oluşturmak

Uptime Kuma arayüzünde “Add New Monitor” butonuna tıklayın ve şu ayarları yapın:

Monitor Type: DNS

  • Name: orneksite.com – A Kaydı İzleme
  • Hostname: orneksite.com
  • Resolver Server: 8.8.8.8
  • DNS Resolve Type: A
  • Expected Value: 192.168.1.100 (beklediğiniz IP adresi)
  • Heartbeat Interval: 60 (saniye cinsinden)

Buradaki en kritik alan Expected Value. Eğer bu alanı boş bırakırsanız, Uptime Kuma sadece kayıt var mı diye kontrol ediyor. Değer girdiğinizde ise “dönen değer beklenenle eşleşiyor mu” kontrolü yapıyor. DNS hijacking veya yanlış propagasyon tespiti için mutlaka bu alanı doldurun.

Gerçek Dünya Senaryosu 1: E-Ticaret Sitesi DNS Sağlık Kontrolü

Diyelim ki bir e-ticaret platformu yönetiyorsunuz. Cloudflare arkasında bir web sunucusu var, ayrı bir mail sunucunuz var ve üçüncü taraf bir ödeme sistemi subdomain üzerinden çalışıyor. Bu yapı için şu monitörler mantıklı olur:

Ana domain A kaydı:

  • Hostname: magazaniz.com
  • Type: A
  • Resolver: 8.8.8.8
  • Expected: Cloudflare proxy IP’si veya gerçek sunucu IP’si

www subdomain CNAME:

  • Hostname: www.magazaniz.com
  • Type: CNAME
  • Expected: magazaniz.com

MX kaydı izleme:

  • Hostname: magazaniz.com
  • Type: MX
  • Expected: mail.magazaniz.com

SPF kaydı kontrolü:

  • Hostname: magazaniz.com
  • Type: TXT
  • Expected: v=spf1 include:_spf.google.com ~all

Ödeme subdomain:

  • Hostname: odeme.magazaniz.com
  • Type: CNAME
  • Expected: payment-provider.example.com

Bu beş monitörü kurduğunuzda, herhangi bir DNS değişikliği veya sorun anında anında haberdar oluyorsunuz. Ödeme sayfasının DNS’i bir şekilde değişirse, müşteriler yanlış bir yere yönlendirilebilir. Bunu erkenden yakalamak ciddi güvenlik ve itibar sorunlarını önlüyor.

Gerçek Dünya Senaryosu 2: Kurumsal E-posta Altyapısı

E-posta teslimat sorunları genellikle DNS katmanından kaynaklanıyor. SPF, DKIM ve DMARC kayıtlarının doğru yapılandırılmış olması gerekiyor ve bunlar yanlışlıkla silinip değiştirilebiliyor.

# Mevcut TXT kayıtlarınızı kontrol etmek için
dig TXT sirket.com +short

# DMARC kaydını kontrol etmek için
dig TXT _dmarc.sirket.com +short

# DKIM kaydını kontrol etmek için (Google Workspace örneği)
dig TXT google._domainkey.sirket.com +short

Bu sorgu sonuçlarını not alın ve Uptime Kuma’ya Expected Value olarak girin. Eğer birisi yanlışlıkla DNS panelinde bu kayıtları değiştirirse veya silerse, monitörünüz hemen alarm verecek.

Özellikle Microsoft 365 veya Google Workspace kullanıyorsanız, alan adı doğrulama TXT kayıtları da kritik. Bu kayıtlar silinirse hesabınız askıya alınabilir.

NS Kayıtlarını İzlemek: Nameserver Değişikliği Tespiti

Nameserver değişikliği ciddi bir güvenlik göstergesi. Birisi DNS yönetim panelinize erişip nameserver kayıtlarınızı değiştirirse, tüm trafiğinizi istedikleri yere yönlendirebilirler.

# Mevcut nameserver'larınızı listelemek için
dig NS sirket.com +short

# Whois üzerinden tescil bilgilerini kontrol etmek için
whois sirket.com | grep -i "name server"

Uptime Kuma’da NS monitörü şöyle kurulur:

  • Type: NS
  • Hostname: sirket.com
  • Expected: ns1.dnsprovider.com (gerçek nameserver adresiniz)
  • Resolver: 8.8.8.8

Burada bir incelik var: NS kaydı için tek bir değer bekliyorsunuz ama genellikle birden fazla nameserver bulunuyor. Uptime Kuma partial match yapabiliyor, yani beklediğiniz değer dönen değerlerin içinde geçiyorsa “up” olarak işaretliyor. Bu çoğu durumda yeterli.

TTL İzleme ve Propagasyon Takibi

Planlı bir DNS değişikliği yapacaksanız, değişiklik öncesi ve sonrası propagasyonu takip etmek önemli. Uptime Kuma bu konuda da yardımcı oluyor.

Örneğin sunucu taşıması yapıyorsunuz. Eski IP: 1.2.3.4, yeni IP: 5.6.7.8. Süreç şöyle ilerlemelidir:

Değişiklik öncesi: TTL değerini düşürün (genellikle 300 saniye yeterli). Bunu en az 48 saat önce yapın ki cache’ler temizlensin.

# Mevcut TTL değerini kontrol etmek için
dig A sirket.com +noall +answer

# Propagasyonun farklı bölgelerdeki durumu için
dig @8.8.8.8 A sirket.com +short
dig @1.1.1.1 A sirket.com +short
dig @9.9.9.9 A sirket.com +short

Değişiklik sonrası: Uptime Kuma’da yeni IP’yi expected value olarak güncelleyin. Eski IP’ye işaret eden kayıtlar için ayrı bir “kontrol” monitörü oluşturup bu monitörün “down” olmasını bekliyorsunuz. Bu biraz tersine çevrilmiş bir yaklaşım ama propagasyonun tamamlandığını doğrulamak için etkili.

Uptime Kuma API ile Otomatik DNS Monitor Oluşturma

Çok sayıda alan adı yönetiyorsanız, her birini manuel olarak eklemek yorucu. Uptime Kuma bir REST API sunuyor. Aşağıdaki script ile toplu DNS monitor ekleyebilirsiniz:

#!/bin/bash
# Uptime Kuma API ile toplu DNS monitor ekleme

UK_URL="http://localhost:3001"
API_TOKEN="your-api-token-here"

# Alan adları listesi
DOMAINS=(
  "sirket1.com:192.168.1.10"
  "sirket2.com:192.168.1.20"
  "sirket3.com:192.168.1.30"
)

for entry in "${DOMAINS[@]}"; do
  DOMAIN=$(echo $entry | cut -d: -f1)
  EXPECTED_IP=$(echo $entry | cut -d: -f2)

  curl -s -X POST "${UK_URL}/api/monitor" 
    -H "Authorization: Bearer ${API_TOKEN}" 
    -H "Content-Type: application/json" 
    -d "{
      "type": "dns",
      "name": "${DOMAIN} - A Kaydi",
      "hostname": "${DOMAIN}",
      "dns_resolve_server": "8.8.8.8",
      "dns_resolve_type": "A",
      "dns_last_result": "${EXPECTED_IP}",
      "interval": 60,
      "active": 1
    }"

  echo "Monitor eklendi: ${DOMAIN}"
  sleep 1
done

Bu script’i alan adı listenizle birlikte çalıştırdığınızda, tüm monitörler otomatik olarak oluşturuluyor.

Bildirim Entegrasyonu: Telegram Bot ile Anlık Alarm

DNS sorunu yaşandığında e-posta yeterince hızlı olmayabilir. Telegram bildirimleri çok daha anlık çalışıyor. Uptime Kuma ayarlarından Notification bölümüne gidin ve Telegram seçin.

# Telegram bot oluşturmak için BotFather'a mesaj atın
# @BotFather -> /newbot -> bot adı girin

# Chat ID'nizi öğrenmek için
curl "https://api.telegram.org/bot<TOKEN>/getUpdates"

# Test mesajı göndermek için
curl -X POST "https://api.telegram.org/bot<TOKEN>/sendMessage" 
  -H "Content-Type: application/json" 
  -d '{
    "chat_id": "YOUR_CHAT_ID",
    "text": "Uptime Kuma DNS Alarm Testi"
  }'

Telegram’ın yanı sıra Slack, Discord, PagerDuty ve SMS entegrasyonları da mevcut. Kritik üretim sistemleri için çoklu bildirim kanalı kurmak iyi pratik. Hem Telegram mesajı hem de e-posta gönderin; birisi çalışmazsa diğeri devreye girer.

Status Page ile DNS Sağlığını Paylaşmak

Müşterilerinize veya iç ekibinize sistem durumunu göstermek istiyorsanız, Uptime Kuma’nın Status Page özelliği oldukça kullanışlı. DNS monitörlerinizi bir grup altında toplayıp halka açık veya parola korumalı bir sayfa oluşturabilirsiniz.

Status Page ayarları:

  • Page Title: Altyapı DNS Durumu
  • Description: Alan adı ve DNS sağlık izleme
  • Monitor List: DNS monitörlerinizi seçin
  • Auto Refresh: 30 saniye önerilir
  • Custom Domain: status.sirketiniz.com gibi bir subdomain atayabilirsiniz

Bu sayfa, müşteri şikayeti gelmeden önce “evet, haberdarız ve çalışıyoruz” mesajını iletmenin en kolay yolu.

Beklenti Yönetimi: False Positive’leri Azaltmak

DNS izlemede sık karşılaşılan sorun, gereksiz alarmlar. Özellikle şu durumlarda false positive oluşabiliyor:

Geçici ağ sorunları: Uptime Kuma’da heartbeat sayısını artırarak bunu azaltabilirsiniz. “Retries” değerini 3-5 olarak ayarlayın. Bu sayede tek bir başarısız sorgu alarm üretmiyor, ardışık 3-5 başarısızlık gerekiyor.

CDN veya load balancer IP rotasyonu: Cloudflare gibi servisler farklı zamanlarda farklı IP’ler döndürebilir. Bu durumda A kaydı monitöründe expected value boş bırakıp sadece “kayıt var mı” kontrolü yapın, IP doğrulamasını başka yöntemlerle gerçekleştirin.

CNAME zinciri: Bazen CNAME, başka bir CNAME’e işaret ediyor. Uptime Kuma bu zinciri çözümlüyor ama beklediğiniz son değeri doğru girdiğinizden emin olun.

# CNAME zincirini takip etmek için
dig +trace CNAME www.sirket.com

# Tüm zinciri çözümlemek için
host www.sirket.com

Uyarı Eşiklerini Doğru Ayarlamak

Her DNS monitörü için aynı ayarları kullanmak doğru değil. Kritiklik seviyesine göre farklılaştırın:

Kritik sistemler (ödeme, login, API):

  • Heartbeat Interval: 30 saniye
  • Retries: 2
  • Retry Interval: 30 saniye
  • Notification: Hem Telegram hem e-posta

Önemli ama kritik olmayan sistemler:

  • Heartbeat Interval: 60 saniye
  • Retries: 3
  • Retry Interval: 60 saniye
  • Notification: Sadece e-posta

İzleme amaçlı, düşük öncelikli:

  • Heartbeat Interval: 300 saniye
  • Retries: 5
  • Notification: Sadece dashboard gösterimi

Bu şekilde alarm yorgunluğunu önlüyorsunuz. Her şey aynı seviyede alarm verirse, gerçekten kritik bir sorun yaşandığında dikkat dağılabiliyor.

DNS Monitor Verilerini Yedeklemek

Uptime Kuma tüm verisini SQLite’ta saklıyor. Düzenli yedek almak için:

#!/bin/bash
# Uptime Kuma yedekleme scripti
BACKUP_DIR="/backup/uptime-kuma"
DATE=$(date +%Y%m%d_%H%M%S)
UK_DATA="/opt/uptime-kuma/data"

mkdir -p "${BACKUP_DIR}"

# SQLite veritabanını kopyala
cp "${UK_DATA}/kuma.db" "${BACKUP_DIR}/kuma_${DATE}.db"

# 30 günden eski yedekleri sil
find "${BACKUP_DIR}" -name "kuma_*.db" -mtime +30 -delete

echo "Yedek alindi: kuma_${DATE}.db"

Bu scripti crontab’a ekleyin:

# Her gece 02:00'de yedek al
0 2 * * * /opt/scripts/backup-uptime-kuma.sh >> /var/log/uk-backup.log 2>&1

Sonuç

DNS izleme, sysadmin dünyasında “görünmez kahraman” kategorisinde. Her şey yolunda gittiğinde kimse fark etmiyor ama bir sorun yaşandığında tüm altyapı etkileniyor. Uptime Kuma bu görünmez katmanı görünür hale getiriyor ve reaktif olmak yerine proaktif davranmanızı sağlıyor.

Kurulum basit, yapılandırma esnek, bildirim seçenekleri zengin. Tek bir Docker container ile onlarca alan adının DNS sağlığını merkezi olarak takip edebiliyorsunuz. Özellikle çok sayıda müşteri alan adı yöneten hosting sağlayıcıları, ajanslar ve büyük kurumsal yapılar için bu tür bir izleme sistemi artık isteğe bağlı değil, zorunlu.

Başlangıç için kendi birincil alan adınızın A, MX ve NS kayıtlarını ekleyin. Bir hafta sonra değerini kendiniz göreceksiniz. Sonrasında müşteri alan adlarını, subdomain’leri ve kritik TXT kayıtlarını ekleyerek genişletebilirsiniz. DNS sorunu gece 2’de değil, mesai saatlerinde ve kendi terminal’inizde tespit etmek için küçük bir yatırım, büyük bir getiri.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir