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
- Celery worker cokmus veya alarm task'ini islemiyor
- Alarm policy deaktif edilmis veya yanlis konfigure edilmis
- Notification contact tanimlanmamis (email/telefon eksik)
- SMTP servisi calismiyor veya credential'lar gecersiz
- WhatsApp API limiti asilmis veya servis kapalı
- Redis baglantisi kopmus, task'lar kuyruge eklenemiyor
- 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)