MQTT Mesaj Gelmiyor
Semptomlar
- Dashboard'da canli veri gorunmuyor, tum widget'lar "Veri Yok" gosteriyor
- WebSocket baglantisi basarili (yesildi) ama sensor degerleri guncellenmiyor
- Yeni eklenen cihazlardan hic veri gelmiyor
- Belirli bir tenant'in tum cihazlarinda veri kesintisi
Olasi Sebepler
- EMQX broker cokmus veya yanit veremiyor
- ACL kurallari degismis, topic'lere erisim engellenmis
- ESP32 cihazlar MQTT broker'a baglanamıyor (TLS/credential sorunu)
- Backend subscriber MQTT mesajlarini islemiyor
- Nginx/reverse proxy WebSocket baglantisini kesiyor
- DNS veya ag sorunu broker adresine ulasilamiyor
Teshis Adimlari
1. EMQX Broker Durumunu Kontrol Et
# EMQX container'inin calisip calismadigini kontrol et
docker compose ps emqx
# EMQX loglarini incele (son 100 satir)
docker logs --tail 100 emqx
# EMQX node durumunu kontrol et
docker exec emqx emqx_ctl status
# EMQX cluster durumunu kontrol et
docker exec emqx emqx_ctl cluster status
2. EMQX Dashboard Kontrolu
# EMQX dashboard'a erisimi test et (port 18083)
curl -s -o /dev/null -w "%{http_code}" http://localhost:18083/api/v5/status
# Bagli client sayisini kontrol et
curl -s -u admin:public http://localhost:18083/api/v5/clients?limit=10 | python3 -m json.tool
3. MQTT Mesaj Akisini Test Et
# mosquitto_sub ile belirli bir topic'i dinle
# Topic pattern: zeus/{tenant_id}/{gateway_id}/{device_id}/{data_type}
mosquitto_sub -h localhost -p 1883 -t "zeus/#" -v --cafile /path/to/ca.crt
# TLS ile baglanti testi
mosquitto_sub -h localhost -p 8883 -t "zeus/#" -v \
--cafile /path/to/ca.crt \
--cert /path/to/client.crt \
--key /path/to/client.key
# Test mesaji gonder
mosquitto_pub -h localhost -p 1883 -t "zeus/test/ping" -m '{"test": true, "ts": "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'"}'
4. Backend Subscriber Loglarini Kontrol Et
# Backend container loglarinda MQTT ile ilgili satirlari filtrele
docker logs --tail 200 zeus-backend 2>&1 | grep -i "mqtt"
# MQTT client baglanti durumunu kontrol et
docker logs --tail 200 zeus-backend 2>&1 | grep -i "connect\|disconnect\|subscribe"
5. Ag ve Port Kontrolu
# MQTT portlarinin acik oldugunu dogrula
# 1883: MQTT, 8883: MQTTS, 8083: WS, 8084: WSS
ss -tlnp | grep -E "1883|8883|8083|8084"
# Container icinden broker'a erisimi test et
docker exec zeus-backend python3 -c "
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = s.connect_ex(('emqx', 1883))
print('MQTT port 1883:', 'ACIK' if result == 0 else 'KAPALI')
s.close()
"
Cozum Adimlari
EMQX Restart
# EMQX container'ini yeniden baslat
docker compose restart emqx
# Basladiktan sonra durumu dogrula
docker compose ps emqx
docker exec emqx emqx_ctl status
ACL Kurallarini Kontrol Et ve Duzelt
# EMQX ACL dosyasini kontrol et
docker exec emqx cat /opt/emqx/etc/acl.conf
# ACL cache'ini temizle
docker exec emqx emqx_ctl acl cache-clean all
# Belirli bir client'in ACL durumunu test et
docker exec emqx emqx_ctl acl check clientid <client_id> publish "zeus/{tenant_id}/#"
TLS Sertifika Kontrolu
# Sertifika gecerlilik tarihini kontrol et
openssl x509 -in /path/to/server.crt -noout -dates
# TLS baglantisini test et
openssl s_client -connect localhost:8883 -CAfile /path/to/ca.crt
# Sertifika zincirini dogrula
openssl verify -CAfile /path/to/ca.crt /path/to/server.crt
ESP32 Baglanti Durumu Kontrolu
# EMQX uzerinden bagli ESP32 cihazlarini listele
curl -s -u admin:public http://localhost:18083/api/v5/clients \
| python3 -c "
import json, sys
data = json.load(sys.stdin)
for c in data.get('data', []):
print(f\"{c['clientid']:30} {c['connected']:6} {c.get('ip_address','?'):15}\")
"
# Belirli bir cihazin baglanti gecmisini kontrol et
curl -s -u admin:public "http://localhost:18083/api/v5/clients?clientid=zeus-gw-{gateway_id}" \
| python3 -m json.tool
Backend MQTT Client'i Yeniden Baglat
# Backend container'ini yeniden baslat (MQTT subscriber dahil)
docker compose restart backend
# Sadece MQTT subscriber worker'ini yeniden baslat (eger ayri ise)
docker compose restart mqtt-subscriber
Eskalasyon
Asagidaki durumlarda DevOps ekibine eskalasyon yapin:
- EMQX cluster tamamen cokmus ve restart ile duzelmiyorsa
- TLS sertifikalari suresi dolmus ve yenilenmesi gerekiyorsa
- Ag duzeyinde MQTT portlarina erisim engellenmisse (firewall degisikligi)
- Veri kaybi suphesi varsa (mesajlar broker'a ulasiyor ama backend'e iletilmiyor)
- Sorun 30 dakikadan fazla suruyorsa ve yukaridaki adimlar ise yaramadiysa