{"time":"2026-05-16T21:30:23.342511671Z","level":"INFO","msg":"observability service stopped","service":"observability"}
{"time":"2026-05-16T21:30:31.859619544Z","level":"INFO","msg":"connected to postgres","service":"observability"}
{"time":"2026-05-16T21:30:31.939606178Z","level":"INFO","msg":"migrations complete","service":"observability"}
{"time":"2026-05-16T21:30:31.939662855Z","level":"INFO","msg":"health poller started","interval":10000000000,"service":"observability"}
{"time":"2026-05-16T21:30:31.93967452Z","level":"INFO","msg":"escalation detector started","service":"observability"}
{"time":"2026-05-16T21:30:31.939749385Z","level":"INFO","msg":"redisstream consumer started","stream":"waf:stream:threats","service":"observability"}
{"time":"2026-05-16T21:30:31.939784372Z","level":"INFO","msg":"dlq monitor started (redis)","streams":["waf:stream:threats:dlq"],"interval":0,"service":"observability"}
{"time":"2026-05-16T21:30:31.94037321Z","level":"INFO","msg":"observability service started","service":"observability"}
{"time":"2026-05-16T21:30:31.94179671Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":1,"service":"observability"}
{"time":"2026-05-16T21:30:31.942883981Z","level":"INFO","msg":"http server starting","addr":"0.0.0.0:8084","service":"observability"}
{"time":"2026-05-16T21:30:41.942915166Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":2,"service":"observability"}
{"time":"2026-05-16T21:30:51.942009649Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:30:51.942041144Z","level":"INFO","msg":"alert","alert_id":"waf_unreachable","severity":"CRITICAL","state":"firing","message":"WAF service is unreachable","count":1,"service":"observability"}
{"time":"2026-05-16T21:31:01.94441391Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:31:11.94216322Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:31:21.94200404Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:31:31.942873043Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:31:41.942885207Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:31:51.941983331Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:32:01.942525991Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:32:11.942050014Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:32:21.942694973Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:32:31.942757292Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:32:41.942529258Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:32:51.942402943Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:33:01.945277071Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:33:11.942207316Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:33:21.941985934Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:33:31.942538049Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:33:41.942744939Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:33:51.942651702Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:34:01.948016212Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:34:11.942713603Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:34:21.941987479Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:34:31.942907915Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:34:41.942048287Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:34:51.942085646Z","level":"WARN","msg":"waf health check failed","error":"waf unreachable: Get \"http://127.0.0.1:9090/api/v1/health\": dial tcp 127.0.0.1:9090: connect: connection refused","consecutive_failures":3,"service":"observability"}
{"time":"2026-05-16T21:35:01.94296294Z","level":"INFO","msg":"alert","alert_id":"waf_unreachable","severity":"CRITICAL","state":"resolved","message":"WAF service is unreachable","count":1,"service":"observability"}
