Dağıtık telemetri platformu (EdgePulse)
CorePulse
EdgePulse, makinelerin CPU, bellek ve çalışma süresi verisini toplayıp eşik aşımlarında anında alarm veren dağıtık bir telemetri platformu. CorePulse ise aynı fikrin portföyde çalışan canlı web demosu: sunucunun ve ziyaretçinin kendi cihazının donanımını gerçek zamanlı gösterir.
- Durum
- Canlıda
- Araçlar
- .NET 8 · ASP.NET Core · RabbitMQ · SignalR · PostgreSQL · Angular 17 · Docker · Next.js

Problem
Telemetri toplamak kolay; zor olan, ölçümleri kaybetmeden taşımak, alarmı toplama işini yavaşlatmadan değerlendirmek ve sonucu arayüze anında iletmek. Amaç, bu parçaları birbirinden ayrık servislerle kurmaktı.
Rolüm
Tek geliştirici: servis mimarisi, .NET servisleri, toplayıcı ajan, Angular arayüzü ve portföydeki web demosu.
Yaklaşım
- 01
Olay hattı
Toplayıcı ajan → YARP ağ geçidi (.NET 8) → Telemetry.API (ASP.NET Core 8) → RabbitMQ → Alert.Worker → SignalR → Angular. Ölçümü alan servis ile alarmı değerlendiren servis kuyrukla ayrıldığı için biri yavaşlasa diğeri etkilenmez.
- 02
Kural tabanlı alarm
.NET 8 Worker Service, her metrik için ayarlanabilir eşikleri değerlendirir ve alarmı SignalR hub’ı üzerinden açık panolara anında iter; veriler PostgreSQL 16’da saklanır.
- 03
Kopmaya dayanıklı ajan
Node.js toplayıcı ajan, ağ geçidine ulaşamadığında ölçümleri yerelde kuyruğa alır ve bağlantı dönünce gönderir. Tüm servisler Docker Compose ile tek komutla ayağa kalkar.
- 04
Portföydeki canlı demo
CorePulse sayfası kurulum istemeden çalışsın diye Next.js üzerinde: bir route handler Node’un os modülünden CPU ve belleği okur, ziyaretçinin ekran kartı WebGL ile tespit edilir, grafikler SVG ile çizilir; istek üzerine sunucuda yük testi çalışır.
Zorlu an
Tek okuma yük söylemez
İşletim sistemi CPU zamanlarını açılıştan beri birikmiş olarak verir; tek bir okuma anlık yükü göstermez. Önceki okuma bellekte tutulur ve yük iki ardışık okuma arasındaki boşta/toplam farkından hesaplanır; ilk okuma yalnızca başlangıç noktasını kaydeder.