Ana içeriğe geç

Envelope: Heartbeat Servisi

Topic: qapu.heartbeat
DLQ: qapu.dlq.heartbeat
Producer: heartbeat-service

Heartbeat servisi, cihazlardan periyodik olarak gelen yaşam işareti mesajlarını işler, cihazın metriklerini günceller ve çevrimiçi/çevrimdışı durum geçişlerini tespit eder. Metrik güncellemede heartbeat.metrics.updated.v1, durum değişiminde heartbeat.status.changed.v1, işleme hatasında heartbeat.failed.v1 üretilir.

Event Envanteri

EventNe zaman üretilir?ConsumerAmaç
heartbeat.metrics.updated.v1Cihaz metrikleri (sinyal, batarya, sıcaklık vb.) güncellendiğindeObserver, DashboardCihaz sağlığı görünürlüğü
heartbeat.status.changed.v1Cihazın çevrimiçi/çevrimdışı durumu değiştiğindeRule, CommunicationDurum bazlı alarm ve bildirim
heartbeat.failed.v1Heartbeat işleme sırasında hata oluştuğundaObserverHata görünürlüğü

heartbeat.metrics.updated.v1

Özet

BaşlıkDeğer
Topicqapu.heartbeat
Producerheartbeat-service
ConsumerObserver, Dashboard
TetikleyiciCihazdan heartbeat mesajı alınıp başarıyla işlendiğinde
KritiklikDüşük/Orta — tanı ve izleme

Payload

{
"event": "heartbeat.metrics.updated.v1",
"meta": {
"trace_id": "01a2b3c4d5e6f7g8h9i0",
"producer_service": "heartbeat-service",
"produced_at": "2026-03-11T15:30:01.200Z",
"process_ms": 12
},
"context": {
"device_id": "400000011D081B70",
"raw_id": null,
"stream_id": null,
"device_time": "2026-03-11T15:30:00Z",
"stream_time": "2026-03-11T15:30:01.200Z",
"iccid": "8990000111111111111",
"imei": "357042111111111",
"firmware": "2.4.1"
},
"data": {
"rssi_dbm": -72,
"battery_mv": 3850,
"board_temp_c": 42.3,
"uptime_sec": 86400,
"firmware_version": "2.4.1",
"ip_address": "10.0.1.42"
},
"error": null
}

Alan Açıklamaları

AlanTipZorunluAçıklama
data.rssi_dbmintegerHayırSinyal gücü (dBm)
data.battery_mvintegerHayırBatarya gerilimi (mV)
data.board_temp_cnumberHayırKart sıcaklığı (°C)
data.uptime_secintegerHayırSon yeniden başlatmadan itibaren çalışma süresi (saniye)
data.firmware_versionstringHayırCihazda çalışan firmware versiyonu
context.stream_idinteger|nullHayırHeartbeat üretim akışıyla ilişkili değilse null

heartbeat.status.changed.v1

Özet

BaşlıkDeğer
Topicqapu.heartbeat
Producerheartbeat-service
ConsumerRule Servisi, Communication Servisi
TetikleyiciCihaz online→offline veya offline→online geçiş yaptığında
KritiklikYüksek — cihaz kayıp durumu alarm üretebilir

Payload

{
"event": "heartbeat.status.changed.v1",
"meta": {
"trace_id": "01a2b3c4d5e6f7g8h9i1",
"producer_service": "heartbeat-service",
"produced_at": "2026-03-11T16:15:05.000Z",
"process_ms": 8
},
"context": {
"device_id": "400000011D081B70",
"raw_id": null,
"stream_id": null,
"device_time": null,
"stream_time": "2026-03-11T16:15:05Z",
"iccid": null,
"imei": null,
"firmware": null
},
"data": {
"previous_status": "online",
"current_status": "offline",
"last_seen_at": "2026-03-11T15:30:01Z",
"offline_duration_sec": null
},
"error": null
}

Alan Açıklamaları

AlanTipZorunluAçıklama
data.previous_statusstringEvetonline | offline | unknown
data.current_statusstringEvetonline | offline
data.last_seen_atstring (ISO 8601)EvetSon başarılı heartbeat zaman damgası
data.offline_duration_secinteger|nullHayırOffline→online geçişinde ne kadar süre çevrimdışı kaldığı

heartbeat.failed.v1

Özet

BaşlıkDeğer
Topicqapu.heartbeat
Producerheartbeat-service
ConsumerObserver Servisi
KritiklikDüşük — işleme hatası; mesaj DLQ'ya da düşer

Payload

{
"event": "heartbeat.failed.v1",
"meta": {
"trace_id": "01a2b3c4d5e6f7g8h9i2",
"producer_service": "heartbeat-service",
"produced_at": "2026-03-11T15:30:01.300Z",
"process_ms": 5
},
"context": {
"device_id": "400000011D081B70",
"raw_id": null,
"stream_id": null,
"device_time": null,
"stream_time": "2026-03-11T15:30:01.300Z",
"iccid": null,
"imei": null,
"firmware": null
},
"device_time": null,
"stream_time": "2026-03-11T15:30:01Z"
},
"data": {},
"error": {
"code": "HEARTBEAT_PARSE_ERROR",
"message": "Missing required field: rssi_dbm",
"stage": "message_parse",
"retryable": false
}
}