Ana içeriğe geç

Alarm Motoru Calismıyor

Semptomlar

  • Sensor degerleri alarm esigini asiyor ama alarm uretilmiyor
  • Alarm listesi sayfasinda yeni kayit gorunmuyor
  • Email/WhatsApp/push bildirimleri gitmiyor
  • Alarm politikasi aktif gorunuyor ama tetiklenmiyor

Olasi Sebepler

  1. Celery worker cokmus veya alarm task'ini islemiyor
  2. Alarm policy deaktif edilmis veya yanlis konfigure edilmis
  3. Notification contact tanimlanmamis (email/telefon eksik)
  4. SMTP servisi calismiyor veya credential'lar gecersiz
  5. WhatsApp API limiti asilmis veya servis kapalı
  6. Redis baglantisi kopmus, task'lar kuyruge eklenemiyor
  7. Alarm engine icindeki mantik hatasi (threshold karsilastirma)

Teshis Adimlari

1. Celery Worker Durumunu Kontrol Et

# Celery worker'larinin durumunu kontrol et
docker exec zeus-backend celery -A app.core.celery.app inspect ping

# Aktif gorevleri listele
docker exec zeus-backend celery -A app.core.celery.app inspect active

# Kayitli gorevleri listele (alarm task'i var mi?)
docker exec zeus-backend celery -A app.core.celery.app inspect registered

# Celery worker loglarini incele
docker logs --tail 200 zeus-celery-worker 2>&1 | grep -i "alarm\|error\|exception"

2. Alarm Politikasi Durumunu Kontrol Et

# Aktif alarm politikalarini sorgula
docker exec -it zeus-postgres psql -U zeus -d zeus_db -c "
SELECT ap.id, ap.name, ap.is_active, ap.severity,
ap.condition_type, ap.threshold_value,
ap.device_id, ap.measurement_type,
ap.created_at
FROM alarm_policies ap
WHERE ap.tenant_id = '{tenant_id}'
AND ap.is_active = true
ORDER BY ap.created_at DESC
LIMIT 20;
"

# Son tetiklenen alarmlari kontrol et
docker exec -it zeus-postgres psql -U zeus -d zeus_db -c "
SELECT a.id, a.severity, a.status, a.message,
a.created_at, a.acknowledged_at
FROM alarms a
WHERE a.tenant_id = '{tenant_id}'
ORDER BY a.created_at DESC
LIMIT 20;
"

3. Bildirim Kanallarini Kontrol Et

# Bildirim kontaklarinin tanimli olup olmadigini kontrol et
docker exec -it zeus-postgres psql -U zeus -d zeus_db -c "
SELECT nc.id, nc.type, nc.target, nc.is_active,
nc.user_id
FROM notification_contacts nc
WHERE nc.tenant_id = '{tenant_id}'
AND nc.is_active = true;
"

# Son gonderilen bildirimleri kontrol et
docker exec -it zeus-postgres psql -U zeus -d zeus_db -c "
SELECT n.id, n.channel, n.status, n.error_message,
n.created_at, n.sent_at
FROM notifications n
WHERE n.tenant_id = '{tenant_id}'
ORDER BY n.created_at DESC
LIMIT 20;
"

4. SMTP/Email Servis Durumunu Kontrol Et

# SMTP baglantisini test et
docker exec zeus-backend python3 -c "
import smtplib
import os
try:
server = smtplib.SMTP(os.environ.get('SMTP_HOST', 'localhost'), int(os.environ.get('SMTP_PORT', 587)))
server.starttls()
server.login(os.environ.get('SMTP_USER', ''), os.environ.get('SMTP_PASS', ''))
print('SMTP baglantisi BASARILI')
server.quit()
except Exception as e:
print(f'SMTP HATASI: {e}')
"

# Backend loglarinda email gonderim hatalarini ara
docker logs --tail 300 zeus-backend 2>&1 | grep -i "smtp\|email\|mail\|send"

5. Redis Baglantisini Kontrol Et

# Redis'e baglanti testi
docker exec zeus-redis redis-cli ping

# Alarm ile ilgili kuyruk boyutlarini kontrol et
docker exec zeus-redis redis-cli LLEN celery:alarm_processing
docker exec zeus-redis redis-cli LLEN celery:notification_sending

# Redis bellek durumu
docker exec zeus-redis redis-cli INFO memory | grep -E "used_memory_human|maxmemory"

6. Backend Alarm Engine Loglarini Incele

# Alarm engine'e ozel loglari filtrele
docker logs --tail 500 zeus-backend 2>&1 | grep -i "alarm_engine\|threshold\|trigger"

# Hata detaylarini ara
docker logs --tail 500 zeus-celery-worker 2>&1 | grep -E "ERROR|CRITICAL|Traceback" -A 5

Cozum Adimlari

Celery Worker'i Yeniden Baslat

# Celery worker container'ini yeniden baslat
docker compose restart celery-worker

# Celery beat'i de yeniden baslat (zamanlanmis gorevler)
docker compose restart celery-beat

# Baslatma sonrasi durumu dogrula
docker exec zeus-backend celery -A app.core.celery.app inspect ping

Alarm Politikasini Aktif Et

# Deaktif olan politikayi aktif et
docker exec -it zeus-postgres psql -U zeus -d zeus_db -c "
UPDATE alarm_policies
SET is_active = true, updated_at = NOW()
WHERE id = '{policy_id}'
AND tenant_id = '{tenant_id}';
"

# Alarm engine cache'ini temizle
docker exec zeus-redis redis-cli DEL "alarm_policies:{tenant_id}"

Bildirim Kontagi Ekle/Duzelt

# Eksik bildirim kontagini kontrol et ve API uzerinden ekle
curl -X POST -H "Authorization: Bearer {TOKEN}" \
-H "Content-Type: application/json" \
"http://localhost:8000/api/v1/notifications/contacts" \
-d '{
"type": "email",
"target": "operator@example.com",
"is_active": true
}'

SMTP Konfigurasyonunu Duzelt

# SMTP environment variable'larini kontrol et
docker exec zeus-backend env | grep -i SMTP

# Degisiklik sonrasi backend'i yeniden baslat
docker compose restart backend celery-worker

WhatsApp API Durumunu Kontrol Et

# WhatsApp API health check
curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer {WHATSAPP_TOKEN}" \
"https://graph.facebook.com/v17.0/{PHONE_NUMBER_ID}/messages"

# Backend loglarinda WhatsApp hatalarini ara
docker logs --tail 300 zeus-celery-worker 2>&1 | grep -i "whatsapp\|wa_api"

Stuck Alarm Task'larini Temizle

# Takilan alarm task'larini iptal et
docker exec zeus-backend celery -A app.core.celery.app purge -Q alarm_processing

# Tum stuck task'lari iptal et (dikkatli kullanin)
docker exec zeus-backend celery -A app.core.celery.app control revoke --terminate \
$(docker exec zeus-backend celery -A app.core.celery.app inspect active \
| grep -oP "'id': '\K[^']+")

Eskalasyon

Asagidaki durumlarda eskalasyon yapin:

  • Kritik alarmlar (ornegin asiri akim, yangin riski) tetiklenemiyorsa — ACIL olarak tum ilgili ekiplere bildirin
  • SMTP servisi tamamen erisilemediyse ve alternatif bildirim kanali yoksa
  • WhatsApp API hesabi askiya alinmissa
  • Celery worker surekli cokuyor ve restart ile duzelmiyorsa
  • Veri butunlugu sorunu — alarm gecmisinde eksik veya yanlis kayitlar varsa
  • Sorun 15 dakikadan fazla suruyorsa (guvenlık acısından alarm sistemi kritiktir)