SpitfireYük Testi ve Gözlemlenebilirlikv1.4.9 · Yenilikler

Sürüm: 1.4.9Bu dokümantasyon Spitfire 1.4.9 içindir.

Altyapı izleme — web sunucuları, Memcached, Prometheus

Nginx, Apache, HAProxy, Memcached ve Prometheus endpoint'leri Tower üzerinden toplanır. Bu kaynaklar kullanıcı gerektirmez; durum sayfasını yalnız Tower'ın IP'sine açın. Ekleme adımları veritabanlarıyla aynıdır.

Nginx

Hızlı kurulum

  1. nginx sunucusunda çalıştırın.
    bash
    curl -fsSL "https://<spitfire>/api/v1/setup/ds/nginx.sh?t=<token>" -o /tmp/sf-nginx.sh && bash /tmp/sf-nginx.sh
  2. OK: ... satırını görünce bitti.
Not

Betik yalnız /etc/nginx/conf.d/spitfire.conf dosyasını yazar (eskisi spitfire.conf.spitfire.bak olarak saklanır), nginx -t çalıştırır ve yalnız sorduktan sonra reload eder. Dosya stub_status'u 8089 portunda yalnız Tower IP'sine ve 127.0.0.1'e açar; her isteği tek bir JSON satırı olarak syslog (UDP 5140) ile Tower'daki Collector'a gönderir. nginx sunucusunda hiçbir şey çalışmaz. Üründe bu satır adres ve yeni bir token ile hazır gelir.

Elle kurulum

  1. Tower makinesinin IP'sini yazın.
    bash
    TOWER_IP=10.0.0.5
  2. Spitfire config'ini yazın.
    bash
    sudo tee /etc/nginx/conf.d/spitfire.conf >/dev/null <<'EOF'
    log_format spitfire_json escape=json '{"time":"$time_iso8601","status":"$status","request_time":"$request_time",'
        '"upstream":"$proxy_host","upstream_addr":"$upstream_addr","upstream_status":"$upstream_status",'
        '"upstream_response_time":"$upstream_response_time","method":"$request_method"}';
    access_log syslog:server=<tower-ip>:5140,tag=nginx,nohostname spitfire_json;
    
    server {
        listen 8089;
        location = /nginx_status {
            stub_status;
            allow <tower-ip>;
            allow 127.0.0.1;
            deny all;
        }
    }
    EOF
    sudo sed -i "s/<tower-ip>/$TOWER_IP/g" /etc/nginx/conf.d/spitfire.conf
  3. nginx'i test edip yeniden yükleyin.
    bash
    sudo nginx -t && sudo systemctl reload nginx
  4. Ekleyin: Altyapı izleme → Nginx.
    text
    Adres: http://<nginx-host>:8089/nginx_status   Access log portu: 5140
  5. Tower makinesinden kontrol edin.
    bash
    curl -fsS http://<nginx-host>:8089/nginx_status | grep -q '^Active connections' && echo 'OK: nginx stub_status erişilebilir'
Not

Neden access log: stub_status yalnız bağlantıları verir. JSON satırı status sınıfını, istek süresini (p50/p95/ortalama), upstream'i, peer'ı ve onun yanıt süresini verir; ücretsiz nginx'te de modül ve agent olmadan çalışır. nginx sunucusundan Tower'a UDP 5140'a izin verin. Kendi access_log satırı olan bir server bloğu bunu miras almaz: aynı access_log syslog:... satırını o bloğun içine de ekleyin. /etc/nginx/conf.d http {} içinde include edilmiyorsa nginx -T | grep spitfire.conf boş döner; dosyayı include edilen klasöre yazın. VTS modülü bunun yerine Prometheus izlenen sistemle okunabilir.

Not

NGINX Plus (Beta): nginx-prometheus-exporter --nginx.plus --nginx.scrape-uri=http://127.0.0.1:8080/api çalıştırın ve adresini NGINX Plus exporter adresi alanına girin (ör. http://web.corp:9113/metrics); dashboard peer durumlarını Plus API'sinden gösterir. Yalnız kayıtlı veriyle test edildi. Paneller: istekler, status sınıfına göre istekler, sonuca göre upstream istekleri, bağlantılar, kabul edilen ve işlenen bağlantılar. Tablolar: istekler, 4xx/5xx, ortalama/p50/p95, aktif ve düşen bağlantılar; upstream'ler; peer'lar. Bulgular: düşen bağlantılar, %1'in üstünde 5xx, 1 sn'nin üstünde p95, down bir peer (uyarı), bir upstream'in tüm peer'ları down (kritik).

Apache

Hızlı kurulum

  1. Komutu Apache sunucusunda çalıştırın, soruları yanıtlayın.

    bash
    curl -fsSL "https://<spitfire>/api/v1/setup/ds/apache.sh?t=<token>" -o /tmp/sf-apache.sh && bash /tmp/sf-apache.sh
  2. Bu satırı görünce bitti.

    text
    OK: Apache Spitfire'a eklendi, ilk metrikler ~1 dk içinde
Not

Ürün arayüzünde (Hızlı kurulum sekmesi) komut adresiniz ve yeni bir token ile hazır gelir; token 1 saat geçerlidir ve tek bir izlenen sistem ekler. Betik Debian/Ubuntu, RHEL ve resmi httpd image düzenini tanır, durum sayfasını yalnız Tower'ın IP'sine açar, ayarı -t ile dener ve onayınızla graceful reload yapar.

Manuel kurulum

  1. Durum sayfasını ekleyin.

    bash
    sudo tee /etc/apache2/conf-available/spitfire-status.conf >/dev/null <<'EOF'
    ExtendedStatus On
    <Location "/server-status">
        SetHandler server-status
        Require ip <tower-ip>
    </Location>
    EOF
    sudo a2enmod status && sudo a2enconf spitfire-status
  2. Ayarı deneyip yeniden yükleyin.

    bash
    sudo apachectl -t && sudo apachectl graceful
  3. Tower makinesinden deneyin.

    bash
    curl -fsS 'http://<host>/server-status?auto' | grep -q '^Total Accesses' && echo 'OK: Apache durum sayfası açık'
  4. Altyapı izleme → Apache → Manuel kurulum ile ekleyin.

Not

RHEL'de dosya /etc/httpd/conf.d/spitfire-status.conf olur, a2enmod/a2enconf gerekmez. Adres: http://<host>/server-status?auto.

HAProxy

Hızlı kurulum

  1. HAProxy sunucusunda çalıştırın.
    bash
    curl -fsSL "https://<spitfire>/api/v1/setup/ds/haproxy.sh?t=<token>" -o /tmp/sf-haproxy.sh && bash /tmp/sf-haproxy.sh
  2. OK: ... satırını görünce bitti.
Not

Betik haproxy.cfg'nin sonuna # BEGIN spitfire ile # END spitfire arasında tek bir blok ekler (dosya haproxy.cfg.spitfire.bak olarak yedeklenir), haproxy -c çalıştırır ve yalnız sorduktan sonra reload eder. Yeniden çalıştırınca blok değişir, ikincisi eklenmez. Üründe bu satır adres ve yeni bir token ile hazır gelir.

Elle kurulum

  1. Tower makinesinin IP'sini yazın.
    bash
    TOWER_IP=10.0.0.5
  2. haproxy.cfg'yi yedekleyin.
    bash
    sudo cp -p /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.spitfire.bak
  3. Stats frontend'ini ekleyin.
    bash
    sudo tee -a /etc/haproxy/haproxy.cfg >/dev/null <<'EOF'
    
    # BEGIN spitfire
    frontend spitfire_stats
        mode http
        bind *:8404
        acl spitfire_tower src <tower-ip> 127.0.0.1
        http-request deny unless spitfire_tower
        http-request use-service prometheus-exporter if { path /metrics }
        stats enable
        stats uri /stats
        stats refresh 10s
    # END spitfire
    EOF
    sudo sed -i "s/<tower-ip>/$TOWER_IP/g" /etc/haproxy/haproxy.cfg
  4. HAProxy'yi test edip yeniden yükleyin.
    bash
    sudo haproxy -c -f /etc/haproxy/haproxy.cfg && sudo systemctl reload haproxy
  5. Ekleyin: Altyapı izleme → HAProxy.
    text
    Adres: http://<haproxy-host>:8404/stats
  6. Tower makinesinden kontrol edin.
    bash
    curl -fsS 'http://<haproxy-host>:8404/stats;csv' | grep -q '^# pxname' && echo 'OK: HAProxy stats erişilebilir'
Not

Frontend yalnız Tower IP'sine ve 127.0.0.1'e yanıt verir. haproxy -vv | grep prometheus boş dönerse prometheus-exporter satırını silin (betik bunu kendisi bakar). Spitfire receiver'ın isteğe bağlı metriklerini (durum, aktif server, queue, yanıt süresi, başarısız check, kesinti) açar ve frontend, backend ve server başına tutar. Tablolar: backend'ler (sorunlular önce), server'lar, frontend'ler. Bulgular: UP server'ı kalmayan backend (kritik), DOWN server, %1'in üstünde 5xx, 5 dakikadır queue, sınırın %90'ını aşan session, başarısız health check (uyarı).

Memcached

Hızlı kurulum (Tower makinesinde)

  1. Komutu kopyalayın, terminale yapıştırıp çalıştırın.

    bash
    curl -fsSL "https://<spitfire>/api/v1/setup/ds/memcached.sh?t=<token>" -o /tmp/sf-memcached.sh && bash /tmp/sf-memcached.sh
  2. OK: memcached ... satırını görünce bitti.

Not

Ürün arayüzünde bu satırlar adresiniz ve yeni bir token ile hazır gelir. Memcached kullanıcı istemez: betik Tower makinesinden stats okur, bağlantı ve bellek limitlerini gösterir ve kaynağı kaydeder. SASL desteklenmez: ne Collector'ın receiver'ı ne de text protocol'ün stats'ı kimlik doğrulayabilir; 11211 portunu yalnızca Tower'ın IP'sine açın.

Manuel kurulum

  1. Tower makinesinden stats okuyun.

    bash
    printf 'stats\r\nquit\r\n' | nc <host> 11211 | grep -q '^STAT uptime' && echo "OK: memcached"
  2. Altyapı izleme → Memcached altında ekleyin, adres <host>:11211.

Canlı görünüm

Memcached dashboard'unda Canlı görünüm kartı vardır. Şimdi oku Tower üzerinde stats, stats slabs ve stats items okur: max_connections'a göre bağlantılar, limit_maxbytes'a göre bellek, eviction, reclaimed ve expired-unfetched item'lar, ve belleğe göre slab class'ları. Out-of-memory hatası olan class kırmızı, evict eden sarı işaretlenir. Sayaçlar son 15 dakikanın okumalarıyla karşılaştırılır.

Prometheus

Hızlı kurulum

  1. Komutu /metrics sunan makinede çalıştırın, soruları yanıtlayın.

    bash
    curl -fsSL "https://<spitfire>/api/v1/setup/ds/prometheus.sh?t=<token>" -o /tmp/sf-prometheus.sh && bash /tmp/sf-prometheus.sh
  2. Bu satırı görünce bitti.

    text
    OK: Metrik adresi Spitfire'a eklendi, ilk metrikler ~1 dk içinde
Not

Ürün arayüzünde (Hızlı kurulum sekmesi) komut adresiniz ve yeni bir token ile hazır gelir; token 1 saat geçerlidir ve tek bir izlenen sistem ekler. /metrics sunan herhangi bir endpoint olur (ör. node_exporter :9100); betik adresi dener ve Prometheus biçimi olduğunu denetler.

Manuel kurulum

  1. Endpoint'i Tower makinesinden deneyin.

    bash
    curl -fsS 'http://<host>:9100/metrics' | grep -q '^# TYPE' && echo 'OK: metrik adresi yanıt verdi'
  2. Altyapı izleme → Prometheus → Manuel kurulum ile ekleyin.

  3. Endpoint'in her metriği dashboard'daki Tüm metrikler sekmesinde: Tüm metrikler.

Eşik bulguları

Teknoloji Bulgu
Nginx Düşen bağlantılar, %1'in üstünde 5xx, 1 sn'nin üstünde p95, down bir peer (uyarı); bir upstream'in tüm peer'ları down (kritik)
HAProxy DOWN server, %1'in üstünde 5xx, 5 dakikadır queue, sınırın %90'ını aşan session, başarısız health check, yanıt ya da bağlantı hataları (uyarı); UP server'ı kalmayan backend (kritik)
Memcached Eviction arttı (uyarı)
Memcached Bellek limit_maxbytes'ın %90'ını aştı ve evict ediliyor (uyarı)
Memcached Get hit oranı %80'in altında, 100 get'ten sonra (uyarı)
Memcached Bağlantılar max_connections'ın %90'ını aştı (uyarı)
Memcached Bağlantılar reddedildi: rejected_connections ya da listen_disabled_num arttı (kritik)
Memcached Out-of-memory hataları: item'lar saklanamadı (kritik)
Memcached Yakın zamanda yeniden başladı: cache soğuk (uyarı)
Prometheus Scrape hedefi ayakta değil, up = 0 (kritik)

Başarı kontrolü

  1. Tower makinesinde curl -s http://<host>:8089/nginx_status (ya da ilgili adres) yanıt veriyor.
  2. Son test = Bağlandı, 1-2 dakika içinde dashboard'da çizgiler var.