← Observer Servisi Ana Sayfasi
Observer Servisi Event Sozlesmeleri
Izlenen Giris Eventleri
ingest.accepted.v1
Akis baslangic eventi
{
"event": "ingest.accepted.v1",
"meta": {
"schema_version": 1,
"trace_id": "obs-34cd...",
"producer_service": "ingest-service",
"produced_at": "2026-04-14T10:20:00.100Z",
"process_ms": 9
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412
},
"data": {},
"error": null
}
Stage Basari Eventleri
Observer asagidaki eventleri stage completion sinyali olarak kabul eder:
stream.created.v1calibration.ready.v1raw.persisted.v1synth.ready.v1window.ready.v1rule.completed.v1
Not: rule.completed.v1 eventinde no-trigger durumunda da result=success beklenir.
Stage Hata Eventleri
stream.failed.v1calibration.failed.v1raw.failed.v1synth.failed.v1window.failed.v1rule.failed.v1
Observer Cikis Eventleri
observer.buffer.duplicate.v1
Ayni stream_id ile tekrar ingest geldiginde
{
"event": "observer.buffer.duplicate.v1",
"meta": {
"schema_version": 1,
"trace_id": "obs-34cd...",
"producer_service": "observer-service",
"produced_at": "2026-04-14T10:21:00.200Z"
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412
},
"data": {
"existing_stream_id": 9823412,
"incoming_stream_id": 9823412,
"action": "keep_existing_buffer"
},
"error": null
}
observer.buffer.replaced.v1
Yeni stream geldigi icin eski takili buffer degistirildiginde
{
"event": "observer.buffer.replaced.v1",
"meta": {
"schema_version": 1,
"trace_id": "obs-34cd...",
"producer_service": "observer-service",
"produced_at": "2026-04-14T10:25:00.000Z"
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823500
},
"data": {
"old_stream_id": 9823412,
"new_stream_id": 9823500,
"old_status": "in_progress",
"stale_timeout_sec": 420,
"reason": "stuck_previous_stream"
},
"error": null
}
observer.retry.requested.v1
Kaldigi stage'e retry istegi
{
"event": "observer.retry.requested.v1",
"meta": {
"schema_version": 1,
"trace_id": "obs-34cd...",
"producer_service": "observer-service",
"produced_at": "2026-04-14T10:22:00.500Z"
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412
},
"data": {
"target_stage": "synthesis",
"retry_count": 2,
"max_retry": 3,
"backoff_sec": 15,
"reason": "synth.failed.v1 received"
},
"error": null
}
Retry Routing Sozlesmesi
Observer retry eventi, hedef servise asagidaki baglayici kurallarla gonderilir:
| target_stage | target_topic |
|---|---|
stream | cinga.stream.retry |
calibration | cinga.calibration.retry |
raw_writer | cinga.raw-writer.retry |
synthesis | cinga.synthesis.retry |
window | cinga.window.retry |
rule | cinga.rule.retry |
Routing kurallari:
- Kafka message key:
device_id - Partition secimi: hedef servisin standart partitioneri (device bazli ordering korunur)
- Zorunlu headerlar:
x-trace-idx-stream-idx-target-stagex-retry-countx-max-retry
Boylece retry, tam olarak kaldigi stage'e yonlenir ve ayni lifecycle duplicate baslatilmaz.
Ek kural: Retry publish oncesi mevcut buffer incoming.stream_id ile uyumlu degilse, once observer.buffer.replaced.v1 uretilmeli ve buffer yeniden kurulmalidir.
observer.escalated.v1
Max retry sonrasi kalici hata
{
"event": "observer.escalated.v1",
"meta": {
"schema_version": 1,
"trace_id": "obs-34cd...",
"producer_service": "observer-service",
"produced_at": "2026-04-14T10:23:05.000Z"
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412
},
"data": {
"failed_stage": "synthesis",
"retry_count": 3,
"max_retry": 3,
"status": "permanent_failed"
},
"error": {
"error_code": "MAX_RETRY_EXCEEDED",
"error_message": "synthesis stage did not recover after retries",
"retryable": false
}
}
observer.cleanup.completed.v1
Terminal durumda device buffer temizligi tamamlandiginda
{
"event": "observer.cleanup.completed.v1",
"meta": {
"schema_version": 1,
"trace_id": "obs-34cd...",
"producer_service": "observer-service",
"produced_at": "2026-04-14T10:23:06.000Z"
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412
},
"data": {
"terminal_status": "completed",
"buffer_key": "device_buffer:400000011D081B70",
"cleanup_result": "deleted"
},
"error": null
}
Event Log Kaydi
Retry sonrasi kalici hatalar event log'a append edilir.
Minimum alanlar:
trace_iddevice_idstream_idfailed_stageretry_countmax_retryerror_codecreated_at
Terminal durum sonrasi device_buffer temizleme sonucu da event log'a yazilir.