logs
logs, backend servisleri ve cihaz akışlarından üretilen operasyonel olay kayıtlarını tutar. Olayın seviyesi, ilgili servis, cihaz, kullanıcı ve stream bağlamı bu tablo üzerinden izlenir.
Bu yapı, hata analizi, gözlemlenebilirlik, denetim izi ve olay korelasyonu için merkezi log katmanını sağlar.
Rol Siniri: logs ve stream_audit
logs, servis calismasi ve gozlemlenebilirlik icin operasyonel olay katmanidir.stream_audit, sadece yikici stream operasyonlari icin resmi denetim kanit tablosudur.- Ayni olaya iki yerde kayit atilabilir:
logsoperasyonel iz,stream_auditresmi kanit. - Denetim raporu gerektiren silme islemlerinde esas tablo
stream_auditkabul edilir.
FK Davranis Notlari
| FK | ON DELETE | ON UPDATE | Not |
|---|---|---|---|
logs.device_id -> devices.id | SET NULL | CASCADE | Log denetim izi korunur, cihaz referansi opsiyonel kalir. |
logs.user_id -> users.id | SET NULL | CASCADE | Log denetim izi korunur, kullanici referansi opsiyonel kalir. |
logs.stream_id -> streams.id | SET NULL | CASCADE | Log denetim izi korunur, stream referansi opsiyonel kalir. |
Kolonlar
| Kolon | Tip | Null | Anlamı |
|---|---|---|---|
id | bigint | hayır | Log kaydı birincil anahtarı |
level_id | int | hayır | Log seviyesi; log_levels.id |
service_id | int | evet | Logu üreten servis; services.id |
event_code | varchar(50) | evet | Olay kodu |
device_id | varchar(21) | evet | İlişkili cihaz; devices.id |
user_id | int | evet | İlişkili kullanıcı; users.id |
stream_id | int | evet | İlişkili stream; streams.id |
message | text | hayır | İnsan okunur log mesajı |
details | json | evet | Olaya ait ek yapılandırılmış detaylar |
create_time | timestamp | hayır | Logun oluşturulma zamanı |
İndeksler
| İndeks | Tip | Açıklama |
|---|---|---|
id | Primary Key | Tablo birincil anahtarı |
Örnek Kayıtlar
- STREAM_RECEIVED
- STREAM_PARSE_ERROR
- HEARTBEAT_TIMEOUT
- RULE_TRIGGERED
- PUSH_SENT
- E2E-001 Log Zinciri
{
"id": 1,
"level_id": 2,
"service_id": 2,
"event_code": "STREAM_RECEIVED",
"device_id": "46000000C47CA670",
"user_id": null,
"stream_id": 1,
"message": "Ham veri paketi başarıyla işlendi.",
"details": {
"payload_size": 512,
"ip": "10.10.1.25"
},
"create_time": "2026-04-03 10:30:00"
}
Özet: Ingest servisinde ham stream paketi başarıyla işlenmiş bilgi seviyesi log kaydı.
{
"id": 2,
"level_id": 4,
"service_id": 2,
"event_code": "STREAM_PARSE_ERROR",
"device_id": "46000000C47CA671",
"user_id": null,
"stream_id": null,
"message": "Stream parse edilirken variable değeri çözümlenemedi.",
"details": {
"variable": "VRMS_R",
"raw_value": "abc"
},
"create_time": "2026-04-03 10:31:00"
}
Özet: Hatalı ham değer nedeniyle parse aşamasında oluşan error seviyesi log kaydı.
{
"id": 3,
"level_id": 3,
"service_id": 3,
"event_code": "HEARTBEAT_TIMEOUT",
"device_id": null,
"user_id": null,
"stream_id": null,
"message": "SIM heartbeat timeout oldu.",
"details": {
"sim_id": 2,
"last_checked_at": "2026-04-03 10:15:00"
},
"create_time": "2026-04-03 10:32:00"
}
Özet: Heartbeat servisinde SIM canlılık kontrolünde zaman aşımı uyarısı kaydedilmiş.
{
"id": 4,
"level_id": 2,
"service_id": 4,
"event_code": "RULE_TRIGGERED",
"device_id": "46000000C47CA670",
"user_id": null,
"stream_id": 1,
"message": "Yüksek akım alarm kuralı tetiklendi.",
"details": {
"rule_group_id": 1,
"trigger_count": 2
},
"create_time": "2026-04-03 10:30:05"
}
Özet: Rule engine tarafından kural tetiklenmesi bilgi seviyesi olarak kaydedilmiş.
{
"id": 5,
"level_id": 2,
"service_id": 5,
"event_code": "PUSH_SENT",
"device_id": null,
"user_id": 1,
"stream_id": null,
"message": "Push bildirimi kullanıcıya gönderildi.",
"details": {
"message_id": 2,
"mobile_device_id": 1
},
"create_time": "2026-04-03 10:30:06"
}
Özet: Push worker servisi tarafından kullanıcıya bildirim gönderimi tamamlanmış.
[
{
"id": 101,
"level_id": 2,
"service_id": 2,
"event_code": "STREAM_ACCEPTED",
"device_id": "46000000C47CA670",
"stream_id": 101,
"message": "E2E-001 packet accepted",
"details": {"scenario":"E2E-001","raw_id":101},
"create_time": "2026-04-09 10:30:00"
},
{
"id": 102,
"level_id": 2,
"service_id": 4,
"event_code": "RULE_TRIGGERED",
"device_id": "46000000C47CA670",
"stream_id": 101,
"message": "E2E-001 high current rule triggered",
"details": {"scenario":"E2E-001","rule_group_id":1,"event_id":101},
"create_time": "2026-04-09 10:30:05"
},
{
"id": 103,
"level_id": 2,
"service_id": 5,
"event_code": "PUSH_SENT",
"device_id": null,
"user_id": 1,
"stream_id": null,
"message": "E2E-001 push sent",
"details": {"scenario":"E2E-001","message_id":101},
"create_time": "2026-04-09 10:30:06"
}
]
Özet: E2E-001 icin ingest -> rule -> push akisinin servis loglarinda ardışık izini gosterir.