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
- nginx sunucusunda çalıştırın.
curl -fsSL "https://<spitfire>/api/v1/setup/ds/nginx.sh?t=<token>" -o /tmp/sf-nginx.sh && bash /tmp/sf-nginx.sh OK: ...satırını görünce bitti.
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
- Tower makinesinin IP'sini yazın.
TOWER_IP=10.0.0.5 - Spitfire config'ini yazın.
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 - nginx'i test edip yeniden yükleyin.
sudo nginx -t && sudo systemctl reload nginx - Ekleyin: Altyapı izleme → Nginx.
Adres: http://<nginx-host>:8089/nginx_status Access log portu: 5140 - Tower makinesinden kontrol edin.
curl -fsS http://<nginx-host>:8089/nginx_status | grep -q '^Active connections' && echo 'OK: nginx stub_status erişilebilir'
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.
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
Komutu Apache sunucusunda çalıştırın, soruları yanıtlayın.
curl -fsSL "https://<spitfire>/api/v1/setup/ds/apache.sh?t=<token>" -o /tmp/sf-apache.sh && bash /tmp/sf-apache.shBu satırı görünce bitti.
OK: Apache Spitfire'a eklendi, ilk metrikler ~1 dk içinde
Ü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
Durum sayfasını ekleyin.
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-statusAyarı deneyip yeniden yükleyin.
sudo apachectl -t && sudo apachectl gracefulTower makinesinden deneyin.
curl -fsS 'http://<host>/server-status?auto' | grep -q '^Total Accesses' && echo 'OK: Apache durum sayfası açık'Altyapı izleme → Apache → Manuel kurulum ile ekleyin.
RHEL'de dosya /etc/httpd/conf.d/spitfire-status.conf olur, a2enmod/a2enconf gerekmez. Adres: http://<host>/server-status?auto.
HAProxy
Hızlı kurulum
- HAProxy sunucusunda çalıştırın.
curl -fsSL "https://<spitfire>/api/v1/setup/ds/haproxy.sh?t=<token>" -o /tmp/sf-haproxy.sh && bash /tmp/sf-haproxy.sh OK: ...satırını görünce bitti.
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
- Tower makinesinin IP'sini yazın.
TOWER_IP=10.0.0.5 - haproxy.cfg'yi yedekleyin.
sudo cp -p /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.spitfire.bak - Stats frontend'ini ekleyin.
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 - HAProxy'yi test edip yeniden yükleyin.
sudo haproxy -c -f /etc/haproxy/haproxy.cfg && sudo systemctl reload haproxy - Ekleyin: Altyapı izleme → HAProxy.
Adres: http://<haproxy-host>:8404/stats - Tower makinesinden kontrol edin.
curl -fsS 'http://<haproxy-host>:8404/stats;csv' | grep -q '^# pxname' && echo 'OK: HAProxy stats erişilebilir'
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)
Komutu kopyalayın, terminale yapıştırıp çalıştırın.
curl -fsSL "https://<spitfire>/api/v1/setup/ds/memcached.sh?t=<token>" -o /tmp/sf-memcached.sh && bash /tmp/sf-memcached.shOK: memcached ...satırını görünce bitti.
Ü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
Tower makinesinden stats okuyun.
printf 'stats\r\nquit\r\n' | nc <host> 11211 | grep -q '^STAT uptime' && echo "OK: memcached"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
Komutu
/metricssunan makinede çalıştırın, soruları yanıtlayın.curl -fsSL "https://<spitfire>/api/v1/setup/ds/prometheus.sh?t=<token>" -o /tmp/sf-prometheus.sh && bash /tmp/sf-prometheus.shBu satırı görünce bitti.
OK: Metrik adresi Spitfire'a eklendi, ilk metrikler ~1 dk içinde
Ü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
Endpoint'i Tower makinesinden deneyin.
curl -fsS 'http://<host>:9100/metrics' | grep -q '^# TYPE' && echo 'OK: metrik adresi yanıt verdi'Altyapı izleme → Prometheus → Manuel kurulum ile ekleyin.
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ü
- Tower makinesinde
curl -s http://<host>:8089/nginx_status(ya da ilgili adres) yanıt veriyor. - Son test = Bağlandı, 1-2 dakika içinde dashboard'da çizgiler var.