Sunucumu dış araçlara bağımlı olmadan sıfır açık yüzeyle izlemek.
Küçük üretim sunucum için tasarlanan NodeScope; Netlify üzerinde çalışan Next.js arayüzünü, güvenlik sınırı görevindeki Go Backend API katmanını ve yalnızca iç ağda çalışan ultra hafif Rust monitoring ajanını bir araya getiren modern bir gözlem mimarisidir.
Netlify üzerinde hızlı, bağımsız ve temiz görselleştirme
Tek yetkilendirme sınırı · Dış dünyaya kontrollü veri
Dış internete kapalı · ~4.8 MB RAM ayak izi
Üretimde Çalışan Mevcut Sistem Bileşenleri
Tek bir kompakt VPS üzerinde çalışan arka uç, veritabanı ve e-posta servisleri ile Netlify üzerinde dağıtık çalışan modern ön yüz uygulamaları.
routine-flow-api
Go Backend APIUygulama iş mantığını yürüten, kimlik doğrulama ve yetkilendirme süreçlerini yöneten merkezi Go servisi. Yeni mimaride aynı zamanda güvenli monitoring geçidi rolünü üstlenir.
PostgreSQL
İlişkisel VeritabanıUygulama verilerini, kullanıcı durumlarını ve gelecekteki tarihsel metrik özetlerini barındıran birincil veri katmanı. Yalnızca yerel servisler tarafından erişilebilir.
Caddy
Ters Vekil & Otomatik TLSGelen tüm dış trafiği karşılayan, sertifika yönetimini otomatikleştiren ve yalnızca izin verilen trafiği Go API katmanına yönlendiren modern web sunucusu.
Stalwart Mail
E-posta SunucusuRust tabanlı modern, hepsi-bir-arada e-posta sunucusu. Düşük bellekli bir VPS üzerinde kesintisiz teslimat için disk, inode ve bellek takibi en kritik bileşendir.
Webmail Arayüzü
E-posta İstemcisiNetlify üzerinde barındırılan, Stalwart Mail altyapısıyla haberleşen hızlı ve modern web tabanlı e-posta arayüzü.
Netlify Uygulamaları
İstemci KatmanıKişisel projelerin ve yeni NodeScope monitoring arayüzünün sunucu yükünden tamamen bağımsız olarak çalıştığı küresel dağıtım katmanı.
Dışarıdan “200 OK” Görünmesi, İçeride Her Şeyin Yolunda Olduğu Anlamına Gelmez
Harici uptime servisleri yalnızca sunucunun yanıt verip vermediğini söyler; ancak çökmeden hemen önceki bellek sıkışmasını, swap taşmasını veya inode tükenmesini gösteremez.
Mevcut Sınırlamalar
Klasik Dış Uptime ve Ağır Ajanların Sorunları
Harici ping servisleri yalnızca HTTP 200 yanıtını görür; sunucu içeride %95 swap kullanırken veya disk dolmak üzereyken her şey normal görünür.
Klasik izleme araçları sunucu üzerinde dışarıya açık metrik portları veya tam yetkili soket erişimleri talep ederek saldırı yüzeyini büyütür.
Prometheus, Grafana veya ticari SaaS ajanları yüzlerce megabayt RAM tüketerek küçük bir VPS'te asıl servislerin (PostgreSQL, Stalwart) alanını daraltır.
SSH ile sunucuya bağlanıp htop, df -h ve journalctl komutlarını tek tek çalıştırmak mobil cihazda veya hızlı teşhis anında pratik değil.
İhtiyaç Duyulan Çözüm
NodeScope Tasarım Kriterleri
Kriz anından önce CPU yükünü, kullanılabilir RAM miktarını, swap baskısını ve inode oranlarını doğrudan çekirdek düzeyinde görmek gerekiyor.
Metrik toplayıcı ajan dış internete tamamen kapalı kalmalı; yalnızca mevcut Go API üzerinden, kimlik doğrulaması sonrası güvenli özet sunmalıdır.
Sadece birkaç megabayt bellek kullanan, çöp toplayıcı (GC) duraksaması yaratmayan yalın bir Rust ajanı ile mevcut kaynakları koruyan yapı.
API, veritabanı, ters vekil ve e-posta sunucusunun durumunu saniyeler içinde özetleyen temiz, modern ve kişisel bir gözlem arayüzü.
Gerçek Senaryo Özeti: Dışarıdan /health uç noktası 200 OK dönerken içeride swap alanı %90'a ulaşmış veya mail kuyruğu inode sınırına dayanmış olabilir. Amacımız sunucuyu dışarı açmadan bu iç baskıyı zamanında görmektir.
Katmanlı, İzole ve Güvenlik Sınırı Net Gözlem Mimarisi
İstemci arayüzü hiçbir zaman sunucu içindeki Rust ajanına doğrudan ulaşamaz. Tüm iletişim Go Backend API güvenlik sınırı üzerinden kontrollü olarak gerçekleşir. Katmanlara tıklayarak detayları inceleyebilirsiniz.
Go Backend API (routine-flow-api)
Yetkilendirme, Önbellekleme ve Güvenlik Sınırı · Go · Caddy Reverse Proxy · JSON DTO
Mimarinin güvenlik sınırı (Security Boundary). Dış dünyadan gelen istekleri doğrular, hız sınırlarını (rate-limit) uygular ve yalnızca iç ağdaki Rust ajanından aldığı veriyi sanitize ederek dışarı sunar.
- Kimlik doğrulama ve yetkilendirme kontrolünü tek merkezde uygulamak
- İç ağ üzerinden Rust ajanını sorgulayıp yanıtları kısa süreli önbelleklemek
- Ham sistem bilgisini sızdırmadan güvenli, tipli JSON şemasına dönüştürmek
Tek dışa açık iletişim noktasıdır; iç ağ ile dış internet arasındaki güvenlik duvarıdır.
// Go -> Rust İç İstek (Loopback / İç Konteyner Ağı) GET http://nodescope-agent.internal:9400/internal/v1/snapshot X-Internal-Token: <shared-hmac-secret>
En Az Ayrıcalık ve Sıfır Açık Yüzey Yaklaşımı
Gözlem katmanı sunucunun güvenliğini zayıflatmamalıdır. Mimari, saldırı yüzeyini büyütmeden iç görünürlük sağlamak üzere 6 temel güvenlik kuralı üzerine kurulmuştur.
Rust Ajanına Sıfır Açık Erişim
Rust monitoring ajanı hiçbir koşulda genel internete port açmaz. Yalnızca sunucu içi loopback veya izole iç konteyner ağı üzerinden Go API tarafından erişilebilir.
Go Backend Yetkilendirme Sınırı
Frontend asla ajanla doğrudan konuşamaz. Tüm kimlik doğrulama, hız sınırlama (rate limiting), önbellekleme ve yanıt filtreleme işlemleri Go katmanında gerçekleşir.
Docker Socket Bağlantısından Kaçınma
/var/run/docker.sock bağlamak pratikte root yetkisi vermek demektir. Mimari, temel host metrikleri ve servis probe'ları için Docker soketine ihtiyaç duymayacak şekilde tasarlanmıştır.
Salt-Okunur (Read-Only) Metrik Erişimi
Ajan, host üzerindeki /proc ve dosya sistemi istatistiklerini yalnızca okuma modunda (:ro) inceler. Süreç sonlandırma, dosya yazma veya yapılandırma değiştirme yetkisi yoktur.
En Az Ayrıcalık (Least Privilege)
Ajan konteyneri veya servisi, kısıtlı bir sistem kullanıcısı (non-root UID) ve düşürülmüş Linux yetenekleriyle (cap_drop: ALL) çalıştırılır.
Minimal Saldırı Yüzeyi
Rust'ın bellek güvenliği garantileri, harici kabuk (shell) komutu çalıştırmayan doğrudan sistem çağrıları ve yalnızca tek bir iç HTTP/JSON uç noktası ile saldırı yüzeyi minimumda tutulur.
• Next.js arayüzünün yalnızca HTTPS üzerinden Go API ile konuşması
• Go API'nin iç loopback ağından Rust ajanını sorgulaması
• Rust ajanının /proc verilerini salt-okunur okuması
• Rust ajanının 0.0.0.0 genel ağında port açması
• Ajan içerisine /var/run/docker.sock bağlanması
• Ham sistem hatalarının veya iç IP topolojisinin dışarı sızdırılması
Çekirdekten Uygulama Katmanına 9 Kritik Telemetri Grubu
CPU & Sistem Yükü (Load)
/proc/stat · /proc/loadavgÇekirdek bazlı kullanım yüzdesi, 1/5/15 dakikalık sistem yük ortalamaları ve paylaşımlı VPS ortamında kritik olan CPU steal oranı.
RAM & Kullanılabilir Bellek
/proc/meminfo (MemAvailable)Yalnızca kullanılan belleği değil, Linux önbelleği düşüldükten sonra yeni süreçler için gerçekten kullanılabilir (MemAvailable) kapasiteyi izler.
Swap Kullanımı ve Baskısı
/proc/swaps · /proc/vmstatKüçük VPS'lerde OOM (Out-of-Memory) kaynaklı servis çökmelerinin en erken habercisi olan swap doluluk oranı ve sayfa değişim hareketliliği.
Disk Doluluk Oranı
statvfs (Root & Veri Bölümü)Veritabanı büyümesi, mail depolaması ve sistem günlüklerinin toplam disk alanı üzerindeki etkisini bölüm bazında takip eder.
Inode Kullanım Oranı
statvfs (f_ffree / f_files)Özellikle Stalwart Mail sunucusu ve küçük önbellek dosyaları nedeniyle diskte yer varken bile sistemi kilitleyebilen inode tükenmesini önler.
Ağ Trafiği (RX / TX)
/proc/net/dev (eth0)Arayüz bazında gelen/giden veri akış hızını, toplam bant genişliği tüketimini ve paket düşme (drop/error) istatistiklerini kaydeder.
İç Servis Sağlık Durumu
Yerel TCP & HTTP Probe'larıroutine-flow-api, PostgreSQL, Caddy ve Stalwart Mail servislerinin iç ağ üzerinden gerçekten yanıt verip vermediğini doğrular.
Servis Yanıt Gecikmesi
İç Probe RTT ÖlçümüServislerin yalnızca ayakta olmasını değil, iç sorgulara kaç milisaniyede yanıt verdiğini ölçerek yavaşlamaları erken yakalar.
Sistem & Servis Çalışma Süresi
/proc/uptime · Probe GeçmişiSunucu çekirdeğinin ve kritik servislerin son yeniden başlatmadan bu yana kesintisiz çalışma süresini takip eder.
Adım Adım, Risk Almadan Hayata Geçirilen 4 Fazlı Yol Haritası
Mevcut üretim servislerini kesintiye uğratmadan, önce iç veri toplama katmanını kurup ardından görselleştirme ve tarihsel hafızayı ekleyen aşamalı yaklaşım.
Çekirdek Rust Ajanı & İç Gözlem
Temel Metrikler ve Güvenli İç İletişim
Dış dünyaya kapalı, hafif Rust ajanını ayağa kaldırarak host metriklerini ve yerel servis sağlık durumlarını toplamak.
Sunucu içinde ~5 MB RAM ile çalışan, sıfır açık portlu güvenilir veri kaynağı.
Go API Geçidi & Canlı Arayüz
Merkezi Toplama ve Next.js Gösterge Paneli
Go backend üzerinde güvenli monitoring uç noktalarını açmak ve Netlify üzerindeki Next.js arayüzünde canlı veriyi görselleştirmek.
Tarayıcıdan güvenli geçit üzerinden izlenebilen uçtan uca canlı sistem görünümü.
Tarihsel Kayıtlar & Olay Günlüğü
Zaman Serisi Görünümü ve Durum Geçmişi
Anlık fotoğrafın ötesine geçerek kaynak kullanım eğilimlerini ve servis durum değişimlerini kaydetmek.
Geçmişe dönük darboğaz analizi ve ne zaman ne olduğunun net kaydı.
Akıllı Uyarılar & Derin Teşhis
Proaktif Bildirimler ve İsteğe Bağlı Detaylar
Sorunlar kullanıcıya yansımadan önce bildirim üreten ve servis bazında derinlemesine analiz sunan olgun yapı.
Sürekli ekrana bakmayı gerektirmeyen, kendi kendini raporlayan akıllı altyapı.
Sadelik, Güvenlik ve Tam Sahiplik Üzerine Kurulu Avantajlar
Karmaşık kurumsal izleme araçlarını taklit etmek yerine, küçük bir üretim sunucusunun gerçek ihtiyaçlarına odaklanan mühendislik tercihi.
Ultra Hafif Kaynak Ayak İzi
Rust ajanı ve Go geçidi birleşimi, ağır Java/Python tabanlı ajanların aksine sunucu belleğini ve işlemcisini tüketmez.
Tasarımdan Gelen Güvenlik
İnternete açılan yeni bir monitoring portu veya dışarıya bağlanan üçüncü parti bir ajan yoktur; mevcut Go güvenlik sınırı korunur.
Küçük VPS İçin İdeal Uyum
Veritabanı, API ve e-posta sunucusunun aynı makinede çalıştığı kompakt üretim ortamları için özel olarak boyutlandırılmıştır.
Pahalı SaaS Platformlarından Bağımsızlık
Host başına ücretlendirme yapan, veri saklama süresini kısıtlayan veya karmaşık fiyatlandırma sunan dış servislere bağımlılığı bitirir.
Mevcut Teknoloji Yığınıyla Tam Uyum
Halihazırda kullanılan Netlify dağıtım hattı, Caddy ters vekili ve routine-flow-api ile tek bir bütün olarak çalışır.
Kolay Genişletilebilirlik ve Tam Sahiplik
Stalwart Mail'e özel bir kuyruk kontrolü veya yeni bir yan uygulama eklendiğinde, birkaç satır Rust/Go koduyla anında izlemeye dahil edilir.
Gözlem katmanının sunucudaki mevcut servislere (PostgreSQL, Stalwart Mail) bıraktığı alan:
Temel Mimari Üzerine İnşa Edilecek İleri Yetenekler
Çekirdek Rust ajanı ve Go güvenlik geçidi kurulduktan sonra, mimariyi bozmadan adım adım eklenebilecek gerçekçi geliştirmeler.
Tarihsel Performans Grafikleri
Saatlik, günlük ve haftalık pencerelerde CPU, RAM ve ağ kullanım eğilimlerini karşılaştırmalı olarak inceleme imkanı.
Özel Korumalı Yönetici Paneli
Genel durum özetinin ötesinde, ayrıntılı süreç metriklerini ve iç teşhis verilerini barındıran kimlik doğrulamalı özel görünüm.
Anlık Eşik ve Anomali Uyarıları
Bellek baskısı, disk doluluğu veya yanıt gecikmesi belirlenen sınırı aştığında e-posta veya webhook ile anında bildirim.
Hata ve Olay Zaman Çizelgesi
Servis yeniden başlamalarını, kısa süreli gecikme sıçramalarını ve eşik ihlallerini kronolojik bir akışta birleştiren olay günlüğü.
Dağıtım (Deployment) İşaretleyicileri
Yeni bir routine-flow-api veya yapılandırma sürümü çıktığında grafikler üzerine otomatik işaret koyarak sürüm etkisini görme.
Servis Bazlı Detay Sayfaları
PostgreSQL bağlantı havuzu, Caddy TLS durumu ve Stalwart Mail SMTP/IMAP kuyruk teşhisleri için özel alt inceleme ekranları.
Stalwart Mail & Sunucu Özel Teşhis Modülü
Hazır araçlarda bulunmayan; SMTP kuyruk beklemeleri, JMAP yanıt süreleri, TLS sertifika yenileme takvimi ve PostgreSQL vakum durumu gibi tamamen kendi sunucuma özel teşhis kartları.
Hafif, İzole ve Tamamen Kendi Kontrolümde Bir Gözlem Katmanı.
NodeScope mimarisi; sunucuyu dış dünyaya açmadan, ağır ajanlarla RAM tüketmeden ve üçüncü parti SaaS platformlarına bağımlı kalmadan tüm üretim servislerimi (routine-flow-api, PostgreSQL, Caddy, Stalwart Mail) tek bir güvenli merkezden izlemek için hazırlandı.
/proc/loadavg, /proc/meminfo ve statvfs okuyucularının oluşturulması
PostgreSQL, Caddy ve Stalwart için yerel sağlık kontrolleri
Go backend üzerinde yetkilendirilmiş /v1/monitoring/overview uç noktası
Netlify üzerindeki ön yüzün Go API geçidine bağlanması