Ana içeriğe geç

Monitoring ve Bakım

Cron Görevleri

SıklıkScriptAçıklama
Her 5dkhealth-check.shRAM, swap, disk, API yanıt süresi
Her 15dkcontainer-monitor.shContainer sağlık, TimescaleDB job'ları, Redis bellek
Günlük 00:00cleanup-docker.shDangling image, build cache, volume temizliği
Günlük 00:05pg-slow-query-snapshot.shPostgreSQL yavaş sorgu raporu
Günlük 06:00Log rotation10MB üstü log dosyalarını kırp

Yardımcı Script'ler

ScriptAçıklama
setup-ssl.shLet's Encrypt SSL kurulumu (certbot + cron)
generate-emqx-certs.shSelf-signed sertifika (development)
generate_firmware_signing_key.pyECDSA P-256 firmware imzalama anahtarı
quick-backend-deploy.shRebuild olmadan hızlı backend deploy
init_minio.pyMinIO bucket init (zeus-firmwares, versioning, 90 gün lifecycle)
cleanup-docker.shDocker disk temizliği

Telegram Alert

.env dosyasına TELEGRAM_BOT_TOKEN ve TELEGRAM_CHAT_ID ekleyerek alert'leri otomatik alabilirsiniz.


Prometheus Metrikleri

Backend (FastAPI)

  • Endpoint: /metrics
  • Kütüphane: prometheus_client ASGI app olarak mount edilmiştir
  • Toplanan metrikler:
    • HTTP istek sayısı ve süresi — endpoint, method ve status code bazında
    • Aktif bağlantı sayısı — eşzamanlı istek takibi
    • Python GC istatistikleri — garbage collection döngü sayıları ve süreleri
    • İşlem bilgileri — CPU kullanımı, bellek (RSS/VMS), açık dosya tanımlayıcı sayısı

Modbus Poller

  • Endpoint: http://localhost:8085/metrics
  • Port: 8085
  • Toplanan metrikler:
    • Polling döngü sayısı ve süresi — cihaz ve grup bazında
    • Modbus hata sayısı — timeout, CRC hatası, slave hatası ayrımı
    • MQTT publish sayısı ve süresi — başarılı/başarısız ayrımı
    • Kuyruk doluluk oranı — TelemetryQueue backpressure izleme

Scrape Yapılandırması (Prometheus)

# prometheus.yml
scrape_configs:
- job_name: 'zeus-backend'
metrics_path: /metrics
static_configs:
- targets: ['backend:8000']

- job_name: 'zeus-modbus-poller'
metrics_path: /metrics
static_configs:
- targets: ['modbus-poller:8085']

Alert Eşik Değerleri Önerisi

Aşağıdaki tabloda altyapı ve uygulama metrikleri için önerilen warning ve critical eşik değerleri yer almaktadır. Bu değerler Telegram alert sistemi veya Prometheus Alertmanager ile entegre edilebilir.

MetrikWarningCriticalAçıklama
RAM kullanımı>%80>%95Sistem bellek doluluk oranı
Disk kullanımı>%80>%95Kök ve veri bölümü disk doluluk oranı
API yanıt süresi (p95)>2s>10sBackend endpoint yanıt süresi
MQTT queue boyutu>1000 mesaj>5000 mesajEMQX broker mesaj kuyruğu
Celery queue bekleme>50 task>200 taskRedis'teki bekleyen Celery görevleri
TimescaleDB chunk boyutu>5GB>10GBTek bir hypertable chunk'ının disk boyutu
Container restart sayısı>2/saat>5/saatDocker container beklenmeyen yeniden başlatma
PostgreSQL bağlantı havuzu>%80 dolu>%95 doluasyncpg connection pool doluluk oranı
MQTT client disconnect oranı>%10/dk>%30/dkGateway bağlantı kopma oranı

Alert Konfigürasyon Örneği

# health-check.sh içinde Telegram alert tetikleme
RAM_USAGE=$(free | awk '/Mem/ {printf "%.0f", $3/$2 * 100}')
if [ "$RAM_USAGE" -gt 95 ]; then
send_telegram "CRITICAL: RAM kullanımı %${RAM_USAGE}"
elif [ "$RAM_USAGE" -gt 80 ]; then
send_telegram "WARNING: RAM kullanımı %${RAM_USAGE}"
fi